Операторы сравнения vba. Инструкции (операторы) языка VBA. Краткие теоретические сведения

Программа на VBA – это последовательность операторов.

При составлении программ следует придерживаться ряда соглашений. Так, на одной строке можно разместить несколько операторов. Между операторами в одной строке ставится двоеточие.

Любую строку можно разбить на две, расположив в конце первой знаки символов «Пробел» + «Знак подчеркивания» (_), в этом случае вторая строка будет считаться продолжением первой.

Для того, чтобы сделать программу легко читаемой используют комментарии. В языке VBA существуют два способа ввода комментариев: применение апострофа (‘), который можно поставить в любом месте строки, и зарезервированное слово Rem вместо апострофа.

1. Оператор Dim предназначен для объявления типов переменных.

1. Dim A As Integer – переменная A объявляется как целое, т.е. в ней будут храниться только целые величины .

2. Dim D As Date – объявляется переменная D для хранения дат.

3. Dim Фамилия, Наименование As String – объявлютсяпеременные. Фамилия и Наименование, предназначеные для хранения текста.

4. Dim B(12) As Integer – объявляется одномерный массив (вектор), состоящий из 12 целых чисел, причем по умолчанию первый элемент массива будет B(0), а последний B(12).

5. Dim B(3,3) As Single – объявляется двумерный массив 3х3 (матрица), состоящий из действительных чисел.

Если не указан тип переменной, то по умолчанию используется тип Variant. Однако указание конкретного типа переменной делает программу надежнее и убыстряет ее работу, т.к. VBA не требуется тратить время на распознавание необъявленной переменной при каждом обращении к ней.

Если размер массива M заранее не известен и определяется в ходе программы, то при описании массива число элементов не указывается, и массив определяется так:

Dim M() As Integer

После определения числа элементов массива, например, N, необходимо записать оператор

2. Оператор присваивания предназначен для присваивания переменной какого-либо значения.

Синтаксис:

Переменная (или свойство объекта) = выражение.

1. а=5 – переменной А присвоить значение 5 ;

2. b=«Менеджер» – переменной b присвоить значение «Менеджер» ;

· Адрес=Sheets("Организации").Cells(2,2) – переменной Адрес присвоить содержимое ячейки B2, которая находится на листе Организации в текущей рабочей книге;

· Фамилия=UserForm1.TextBox1.Text – переменнойФамилия присвоить содержимое поля TextBox1 пользовательской формы UserForm1.

o Оператор With/End with избавляет программиста от большого количества повторений имени одного и того же объекта.

Синтаксис:

With объект

оператор1

оператор2

операторN

Например, вместо последовательности операторов

UserForm1.TextBox1.Text = Date

UserForm1.TextBox2.Text = “ “

UserForm1.ComboBox1.Text = “ “

можно записать так

TextBox1.Text = Date

. TextBox2.Text = “ “

. ComboBox1.Text = “ “

REM На листе Лист1 в столбце А, начиная со второй строки, записаны ‘тарифы сотрудников. Заполним поле со списком ComboBox1 в ‘пользовательской форме UserForm1

‘Первая строка программы – на листе Лист1 в столбце А ‘подсчитывается количество заполненных ячеек, результат ‘присваивается переменной N

N=Application.CountA(Sheets(“Лист1”).Range(“A:A”)).

D=”A2:A”&Cint(N)

Sheets(“Лист1”).Range(D).Name=”Тарифы”

TextBox1.Text = Date

. TextBox2.Text = “ “

. ComboBox1.Text = “ “

. ComboBox1.Rowsource = “Тарифы “

1. Условный оператор If/Then/Else – позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие

Синтаксис:

If условие Then операторы1 [Else операторы2]

Если условие истинно, то выполняются операторы1, в противном случае выполняются операторы2.

Допускается также использование сложного условного оператора, который записывается в виде блока:

If условие1 Then

операторы1

ElseIf условие2 Then

операторы2

операторы3

Фамилия=.TextBox1.Text

If Фамилия =”“ Then MsgBox”Вы не ввели фамилию”

REM При установленном флажке номер 1 клиенту ‘предоставляется скидка 5%

‘ Сумма – количество денег, выплачиваемых клиентом

‘ Стоимость товара хранится в переменной Стоимость

If UserForm1.CheckBox1.Value = True Then

Сумма=Стоимость-Стоимость*0.05

Else Cумма=Стоимость

1) REM Предположим, что Тариф – это установленный тариф, а Время ‘–отработанное время. Время и тариф вводятся в поля ввода ‘соответственно вTextBox1 и TextBox2. Зарплата рассчитывается по ‘формуле Тариф*Время. Напишем программу для вывода в форму ‘рассчитанной зарплаты. Label4 – надпись, подготовленная для ‘вывода значения зарплаты

If IsNumeric(TextBox1.Text)=True And _

IsNumeric(TextBox2.Text)=True Then

Тариф=TextBox1.Text

Время=TextBox2.Text

Label4.Caption=Тариф*Время

В первом примере работа ведется с пользовательской формой номер один. Переменной Фамилия присваивается содержимое поля ввода номер один. Затем осуществляется проверка, было ли что-либо введено в поле ввода (не пуста ли переменная Фамилия ). Если переменная Фамилия пуста, то на экран выводится окно сообщения.

Во втором примере – первые строки, начинающиеся со слова REM и апострофов, – это комментарии, объясняющие назначения переменных. С помощью условного оператора определяется сумма, выплачиваемая клиентом.

В третьем примере осуществляется проверка того, введены ли в поля ввода числа. Если в два поля введены числа, то переменным присваиваются значения полей ввода и надписи присваивается значение результата умножения тарифа на время.

1) Оператор безусловного перехода GoTo предназначен для задания перехода на указанную строку внутри программы.

Синтаксис:

GoTo Строка

Обязательный аргумент Строка может быть любой меткой строки или номером строки.

If IsNumeric(TextBox1.Text)=False Then GoTo Ошибка

Ошибка: MsgBox “Ошибка при вводе чисел!”

В приведенном примере выполняется проверка того, введено ли число в поле ввода номер один. Если введено не число, то осуществляется переход на строку с меткой Ошибка и на экран выводится сообщение.

2) Оператор цикла For/To/Next предназначен для программирования повторяющихся фрагментов, т.е. для описания циклических алгоритмов.

Синтаксис:

For переменная=M1 To M2 [Step M3]

операторы

M1, M2, M3 – выражения. Оператор цикла повторяет выполнение группы операторов, пока переменная (счетчик) изменяется от начального значения М1 до конечного М2 с указанным шагом М3. Если шаг не указан, то он полагается равным 1.

Фамилия = Sheets(“Сотрудники”).Cells(I,1)

UserForm1.ComboBox1.AddItem Фамилия

В приведенном примере предполагается, что на листе «Cотрудники» в первом столбце записаны фамилии сотрудников, которые нужно внести в список поля со списком номер один пользовательской формы номер один. Алгоритм работы программы:

1) Переменной I присваивается значение 2.

2) Переменной Фамилия присваивается значение ячейки А(I,1), расположенной на листе «Сотрудники». (При первом выполнении цикла это ячейка А(2,1))

3) В список поля со списком ComboBox1 добавляется элемент из переменной Фамилия.

4) К значению переменной I добавляется 1 (если шаг не указан, то он полагается равным 1). Выполняется проверка, не превысила ли величина I 10 (конечного значения переменной I, в примере М3=10)? Если величина I еще меньше или равна 10, то выполняются пункты 2-4, в противном случае работа цикла заканчивается.

Таким образом, приведенная программа позволяет заполнить данными список поля со списком ComboBox1.

Основные алгоритмы, используемые при решении
экономических задач

Основные алгоритмы рассмотрим на следующем примере. В выполнении работы по договору участвовали сотрудники разных отделов. В таблице, на листе «Лист1» представлены данные о количестве отработанных часов каждым из сотрудников (рис.8).


Рис.8.Данные о количестве отработанных часов

сотрудниками фирмы

Логические операторы VBA используются для объединения результатов отдельных логических выражений, чтобы создать сложные критерии для принятия решений в процедуре (таблица Б.3).

Таблица Б.3 – Логические операторы VBA

Логический

Синтаксис

Имя/Описание

оператор

El And E2

Конъюнкция . True, если оба Е1 и Е2

имеют значение True, иначе – False

El Or E2

Дизъюнкция . True, если одно выра-

жение или оба (Е1 и Е2) являются

равными True; иначе – False

Not El

Отрицание . True, если Е1 имеет зна-

чение False; False, если El является

равным True

El Xor E2

Исключение . True, если Е1 и Е2

имеют разные значения; иначе –

El Eqv E2

Эквивалентность . True,если Е1 име-

ет то же самое значение, что и Е2;

иначе – False

El Imp E2

Импликация . False, когда Е1 является

равным True и Е2 равно False; иначе

True.

Операнды Е в этой таблице представляет собой любое допустимое выражение с результатом типа Boolean, такое как операция сравнения.

Приоритеты выполнения операций при вычислении сложных выражений

Сложное (составное) выражение (complex expression) – это любое выражение, образованное из двух или более выражений. В таблице Б.4 собраны операции по группам в порядке убывания приоритета, то есть чем ниже расположена группа, тем позже выполняются указанные в ней операции. Для изменения этого порядка применяются круглые скобки. Операции одного уровня выполняются слева направо в том порядке, в котором они записаны в выражении.

Таблица Б.4 – Приоритеты операций VBA

Оператор

Комментарии

Возведение в степень, наивысший приоритет

Унарный минус - изменение знака числа

Умножение и деление имеют равные приоритеты; они вы-

Деление нацело

Остаток от деления нацело

Сложение и вычитание имеют равный приоритет; они вы-

числяются по мере появления в выражении слева направо

Всякая конкатенация строк выполняется после любых

арифметических операций в выражении и перед любыми

операциями сравнения или логическими операциями

<, <=, >, >=,

Все операторы сравнения имеют равные приоритеты и вы-

числяются по мере появления в выражении слева направо.

Используйте круглые скобки для группирования операто-

ров сравнения в выражениях

Логические

Not And Or Xor Eqv Im p – имеют низший приоритет

операторы

Приложение В Математические функции VBA

VBA предоставляет стандартный набор математических функций приведенный в таблице В.1.

Таблица B.1 – Математические функции VBA

Возвращает / действие

Возвращает абсолютное значение N

Косинус угла N, где N – это угол, измеренный в ра-

Возвращает синус угла; N – это угол, измеренный в

радианах

Возвращает тангенс угла; N – угол в радианах

Возвращает арктангенс N как угол в радианах

Возвращает константу е, возведенную в степень N (е –

это основание натуральных логарифмов и она (при-

близительно) равна 2,718282

Возвращает целую часть N. Fix не округляет число, а

отрицательным, Fix возвращает ближайшее отрица-

тельное целое большее, чем или равное N

Возвращает целую часть N. Int не округляет число, а

отбрасывает любую дробную часть. Если N является

отрицательным, Int возвращает ближайшее отрица-

тельное целое меньшее, чем или равное N

Возвращает натуральный логарифм N

Возвращает случайное число; аргумент является не-

обязательным. Используйте функцию Rnd только

после инициализации VBA-генератора случайных чи-

сел оператором Randomize

Возвращает знак числа: –1, если N – отрицательное;

1, если N –положительное; 0, если N равно 0

Возвращает корень квадратный из N. VBA отображает

ошибку исполнения, если N – отрицательное

Операнд N означает любое численное выражение? допустимое в

Аргумент тригонометрических функции (синуса, косинуса и тангенса) задается в радианах, а не в градусах. Обратная тригонометрическая функция A t n (x ) возвращает в программу значение угла в радианах от -π/2 до π/2, тангенс которого равен значению арифметического выражения х .

Связь между радианной и градусной мерами угла выражается через иррациональное число π ≈ 3,14159265358979323846.

Радианы=

Градусы× π

Градусы=

Радианы× 180

Для перевода градусов в радианы можно также использовать встроенную функцию Excel - Application.Radians(x ), где x – угол, за-

данный в радианах.

Для получения числового значения константы π с точностью 15 цифр мантиссы можно использовать встроенную функцию Excel Application.Pi(), либо функцию VBA арктангенс

Pi= Application.Pi() либо Pi=4*Atn(1)

Примеры записи тригонометрических функций


В Visual Basic можно выделить пять основных и важных логических операторов: And, Or, Not, Xor и Eqv. Роль каждого из них я сейчас и попытаюсь объяснить!

Итак, And!
Это, наверное, самый простой и нужный логический оператор среди других.

Help:
Возвращает результат конъюнкции (логического И) для двух выражений.

Синтксис:
результат = выражение1 And выражение2

Т.е. результат будет истинным только в том случае, когда истинны выражение1 И выражение2. Возвращаемые оператором значения представлены в следующей таблице:

выражение1 выражение2 результат
True True True
True False False
True Null Null
False True False
False False False
False Null False
Null True Null
Null False False
Null Null Null

А теперь маленький пример:

Представим себе, что переменные User_Has_Computer и User_Has_Car объявлены как булевы значения и в процессе каких-нибудь действий приняли значения либо True либо False. Вы устанавливаете условие, проверяющие эти значения:

Мы же сэмулируем это сами:) - впишите куда - нибудь следующие строки:


Dim User_Has_Car As Boolean
User_Has_Computer = True
User_Has_Car = True

If User_Has_Computer And User_Has_Car Then
MsgBox "Вы счастливый человек!"
End If

При проверки данного условия на экран выскочит сообщение, извещающие, что пользователь счастливый человек, т.к. у него есть машинa И компьютер:-)! А теперь перед третьей или четвёртой строкой поставьте апостроф """ - закоменнтируйте строку. Теперь одна из переменных будет False по умолчанию. Теперь сообщение НЕ выскочит, т.к. пользователь не очень счастливый, имея машину ИЛИ компьютер...

Следующий оператор не менее простой - Or.

Help:
Выполняет операцию логического ИЛИ (сложения) для двух выражений.

Синтаксис:
результат = выражение1 Or выражение2

Результат будет истинным только в том случае, если только одно из выражений истинно. Возвращаемые оператором значения представлены в следующей таблице:

выражение1 выражение1 результат
True True True
True False True
True Null True
False True True
False False False
False Null Null
Null True True
Null False Null
Null Null Null

И снова маленький пример с прежними булевыми перменными User_Has_Computer и User_Has_Car, которые в процессе каких-нибудь действий приняли значения либо True либо False.

Dim User_Has_Computer As Boolean
Dim User_Has_Car As Boolean
User_Has_Computer = False
User_Has_Car = True

If User_Has_Computer Or User_Has_Car Then
MsgBox "Вы почти счастливый человек!"
End If

При проверки данного условия на экран выскочит сообщение, извещающие, что пользователь почти счастливый человек, т.к. у него есть машинa, но нет компьютера:-|...

Оператор Not.

Help:
Выполняет над выражением операцию логического отрицания.

Синтаксис:
результат = Not выражение

Т.е. результат стаёт противополжным выражению (исключая Null). Возвращаемые оператором значения представлены в следующей таблице:

Пример:

Dim User_Has_Computer As Boolean

User_Has_Computer = False

If Not User_Has_Computer Then
MsgBox "Сочувствую...:)"
End If

Объясняю: условие If ... Then выполняется тогда, когда какое-нибудь выражение (на месте...) равно True. Представим, что переменная User_Has_Computer = False. Тогда строка
Not User_Has_Computer даёт результат True и условие выполняется!

Оператор Xor.

Help:
Выполняет операцию исключающего ИЛИ для двух выражений.

Синтаксис:
[результат =] выражение1 Xor выражение2

В принципе, этот оператор похож на Or, но это не просто ИЛИ , а исключающее ИЛИ . Если одно и только одно из выражений истинно (имеет значение True), результат имеет значение True. А оператор Or допускает два истинных выражения . Результат

Пример:

Dim User_Has_Computer As Boolean
Dim User_Has_Car As Boolean
User_Has_Computer = False
User_Has_Car = True

If User_Has_Computer Xor User_Has_Car Then
MsgBox "Вам нужна машина И компьютер!"
End If

Здесь так же, как и в предыдущем примере условие выполняется только тогда, когда строка User_Has_Computer Xor User_Has_Car истинна (= True). А истинна она тогда и только тогда, когда только одно из условие истинно. Если оба, то условие уже не исполнится.

Оператор Eqv.

Help:
Используется для проверки логической эквивалентности двух выражений.

Синтаксис:
результат = выражение1 Eqv выражение2

Тут совсем всё просто: результат будет истинным в том случае, если оба выражения либо истинны, либо ложны. Результат определяется следующим образом:

Пример:

Dim User_Has_Computer As Boolean
Dim User_Has_Car As Boolean
User_Has_Computer = True
User_Has_Car = True

If User_Has_Computer Eqv User_Has_Car Then
MsgBox "Вы или счастливый или несчастный человек!"
End If

Здесь компьютер назовёт Вас человеком "счастливым или несчастным", т.к. условие выполняется только тогда, когда пользователь имеет и машину и компьютер или не того и не другого.

Язык VBA был разработан таким образом, чтобы его можно было достаточно легко и быстро изучить, а затем ежедневно использовать. Язык VBA полезен как профессиональным программистам, так и простым пользователям, для автоматизации повседневной рутинной работы. Какой бы не была Ваша цель: упростить повседневную работу или повысить производительность труда, безусловно, язык VBA лучше всего подходит для этих целей, поскольку он разработан специально для работы с приложениями пакета Microsoft Office.

Знание операторов является необходимой основой для изучения любой темы по VBA, т.е. прежде чем браться за изучение языка, стоит достаточное время уделить операторам и функциям.

Операторы VBA

  • AppActivate title, wait - Активизирует открытое приложение по заданному аргументом title заголовку или идентификатору задачи
  • Beep - подача звукового сигнала
  • Call name, argumentlist - Вызов процедуры с названием name. (Поскольку ключевое слово Call необязательно и можно вызвать процедуру, используя только ее имя, этот оператор редко используется в программировании VBA)
  • ChDir path - Заменяет текущую папку папкой, указанной аргументом path
  • Close filenumberlist - Изменяет текущий диск на диск, указанный аргументом drive
  • Const CONSTNAME - Объявляет константой переменную с именем CONSTNAME
  • Date = date - Изменяет системную дату на дату, указанную аргументом date
  • Declare name - Объявляет процедуру из динамически присоединяемой библиотеки (DLL)
  • DefBool letterrange - Оператор уровня модуля, устанавливающий тип Boolean типом данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange (например, DefBool A-F)
  • DefByte letterrange - Задает тип Byte как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefCur letterrange - Задает тип Currency как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefDate letterrange - Задает тип Date как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefDbl letterrange - Задает тип Double как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefInt letterrange - Задает тип Integer как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefLng letterrange - Задает тип Long как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefObj letterrange - Задает тип Object как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefSng letterrange - Задает тип Single как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefStr letterrange - Задает тип String как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DefVar letterrange - Задает тип Variant как тип данных по умолчанию для всех переменных, которые начинаются с букв, указанных аргументом letterrange
  • DeleteStting appname, section, key - Удаляет раздел section или ключ key из реестра Windows
  • Dim varname - Объявляет переменную с именем varname
  • Do:Loop - Выполняет цикл по нескольким операторам до тех пор, пока логическое условие равно True
  • End Keyword - Завершает процедуру, функцию или управляющую структуру
  • Enum name - Оператор уровня модуля, который объявляет переменную перечислимого типа
  • Erase arraylist - Очищает память от динамически выделенного массива или выполняет повторную инициализацию массива с фиксированными размерами
  • Error errornumber - Имитирует ошибку, присваивая объекту Err значение errornumber
  • Event procedurename(arglist) - Оператор может присутствовать только в модуле класса. Он объявляет событие, определенное пользователем
  • Exit keyword - Выход из процедуры, функции или управляющей структуры
  • FileCopy source, destination - Копирует файл source в папку destination (при этом можно изменить имя исходного файла)
  • For Each:Next - Цикл по каждому члену коллекции
  • For:Next - Цикл по нескольким операторам, выполняемый до тем пор, пока счетчик цикла не достигнет заданного значения
  • Function - Объявляет пользовательскую процедуру-функцию
  • Get #filenumber, varname - Производит чтение в переменную из файла ввода-вывода, открытого оператором Open
  • GoSub:Return - Осуществляет вход в подпрограмму, описанную в процедуре, и выход из нее. (Использование этого оператора не рекомендуется, поскольку создание отдельной процедуры позволит сделать код более простым для понимания)
  • GoTo line - Передает управление на строку кода, на которую указывает метка line
  • If:Then:Else - Выполняет один из двух фрагментов кода на основе результата логической проверки
  • Imlements InterfaceName, Class - Определяет название интерфейса или класса, который будет реализован в модуле класса
  • Input #filenumber, varlist - Производит чтение из файла ввода-вывода в переменные
  • Kill pathname - Удаляет файл pathname с диска
  • Let varname = expression - Устанавливает переменную varname равной выражению expression. Ключевое слово Let необязательно и практически никогда не используется
  • Line Input #filenumber, var - Производит чтение одной строки из файла ввода-вывода и сохраняет ее в строковой переменной
  • Load - Загружает форму в память, но не выводит ее на экран
  • Lock #filenumber, recordrange - Управляет доступом к файлу ввода-вывода
  • LSet stringvar = string - Размещает строку, начиная с крайнего слева символа, в переменной типа String. При этом размер переменной не изменяется
  • LSet var1 = var2 - Копирует переменную одного пользовательского типа в переменную другого, но совместимого, пользовательского типа
  • Mid - Заменяет заданное количество символов в строковой переменной символами из другой строки
  • MidB - Побайтно заменяет символы в строковой переменной символами из другой строки
  • MkDir path - Создает папку с именем path
  • Name oldpathname as newpathname - Изменяет имя файла или папки
  • On Error - Задает способ обработки ошибок
  • On:GoSub, On:GoTo - Передает управление заданной строке на основе результата выражения
  • Open pathname, : - Открывает файл для ввода-вывода
  • Option Base 0|1 - Задает (на уровне модуля) для массивов установленную по умолчанию нижнюю границу (номер первого элемента)
  • Option Compare Text|Binary - Определяет (на уровне модуля) установленный по умолчанию режим сравнения строк
  • Option Explicit - Принуждает программиста к явному объявлению переменных. Введите этот оператор на уровне модуля
  • Option Private - Указывает, что модуль закрыт, и к нему нельзя обратиться из процедур, расположенных в других модулях. Введите оператор на уровне модуля
  • Print #filenumber - Производит запись в файл ввода-вывода
  • Private varname - Объявляет, что переменная varname будет закрытой, и ею можно будет пользоваться только в модуле, в котором она объявлена. Введите оператор на уровне модуля
  • Property Get - Объявляет процедуру свойства, которая будет принимать значения этого свойства
  • Property Let - Присваивает значение свойству в процедуре свойства
  • Property Set - Устанавливает ссылку на объект в процедуре свойства
  • Public varname - Открывает доступ к переменной varname для всех процедур, содержащихся в модуле
  • Put #filenumber, varname - Записывает данные из переменной varname а файл ввода-вывода
  • RaiseEvent eventname, arguments - Вызывает событие с именем eventname
  • Randomize number - Инициализирует генератор случайных чисел. Пропустить аргумент number, чтобы каждый раз инициализировать его разными начальными числами
  • ReDim varname - Повторно выделяет память для динамического массива
  • Rem comment - Указывает VBA, что следующий за оператором текст является комментарием. Вместо этого оператора чаще используется символ апострофа
  • Reset - Закрывает все файлы ввода-вывода, которые были ранее открыты оператором Open
  • Resume - После возникновения ошибки возобновляет выполнение программы со строки, в которой возникла ошибка
  • RmDir path - Удаляет папку
  • RSet stringvar = string - Записывает строку в строковую переменную, выравнивая символы по правому краю
  • SaveSetiing appname, : - Создает или сохраняет установки в реестре Windows
  • Seek #filenumber, position - Устанавливает текущую позицию в файле ввода-вывода
  • Select Case - Выполняет группу операторов на основе значения выражения
  • SendKeys string, wait - Передает в активное приложение нажатия клавиш, заданные строкой string так, как будто они были введены с клавиатуры
  • Set objectvar = object - Присваивает объект object объектной переменной с именем objectvar
  • SetAttr pathname, attr - Задает атрибуты доступа, определенные аргументом attr (например, vbReadOnly) для файла, заданного аргументом pathname
  • Static varname - Объявляет (на уровне модуля), что переменная varname будет сохранять свои значения все время, пока будет выполняться код модуля
  • Stop - Переводит VBA в режим паузы
  • Sub - Объявляет процедуру
  • Time = time - Устанавливает системное время равным аргументу time
  • Type varname - Объявляет пользовательский тип данных. (Используется только на уровне модуля)
  • Unload - Удаляет форму из памяти
  • Unlock #filenumber, recordrange - Удаляет атрибуты доступа для файла ввода-вывода
  • While:Wend - Выполняет цикл по группе операторов до тех пор, пока логическое условие истинно
  • Width #filenumber, width - Задает ширину строки для файла ввода-вывода
  • With:End With - Выполняет группу операторов для заданного объекта
  • Write #filenumber - Производит запись данных в файл ввода-вывода

Программа на VBA – это последовательность операторов.

При составлении программ следует придерживаться ряда соглашений. Так, на одной строке можно разместить несколько операторов. Между операторами в одной строке ставится двоеточие.

Любую строку можно разбить на две, расположив в конце первой знаки символов «Пробел» + «Знак подчеркивания» (_), в этом случае вторая строка будет считаться продолжением первой.

Для того, чтобы сделать программу легко читаемой используют комментарии. В языке VBA существуют два способа ввода комментариев: применение апострофа (‘), который можно поставить в любом месте строки, и зарезервированное слово Rem вместо апострофа.

1. Оператор Dim предназначен для объявления типов переменных.

· Dim A As Integer – переменная A объявляется как целое, т.е. в ней будут храниться только целые величины .

· Dim D As Date – объявляется переменная D для хранения дат.

· Dim Фамилия, Наименование As String – объявлютсяпеременные. Фамилия и Наименование, предназначеные для хранения текста.

· Dim B(12) As Integer – объявляется одномерный массив (вектор), состоящий из 12 целых чисел, причем по умолчанию первый элемент массива будет B(0), а последний B(12).

· Dim B(3,3) As Single – объявляется двумерный массив 3х3 (матрица), состоящий из действительных чисел.

Если не указан тип переменной, то по умолчанию используется тип Variant. Однако указание конкретного типа переменной делает программу надежнее и убыстряет ее работу, т.к. VBA не требуется тратить время на распознавание необъявленной переменной при каждом обращении к ней.

Если размер массива M заранее не известен и определяется в ходе программы, то при описании массива число элементов не указывается, и массив определяется так:

Dim M() As Integer

После определения числа элементов массива, например, N, необходимо записать оператор

2. Оператор присваивания предназначен для присваивания переменной какого-либо значения.

Синтаксис:

Переменная (или свойство объекта) = выражение.

· а=5 – переменной А присвоить значение 5 ;

· b=«Менеджер» – переменной b присвоить значение «Менеджер» ;

· Адрес=Sheets("Организации").Cells(2,2) – переменной Адрес присвоить содержимое ячейки B2, которая находится на листе Организации в текущей рабочей книге;

· Фамилия=UserForm1.TextBox1.Text – переменнойФамилия присвоить содержимое поля TextBox1 пользовательской формы UserForm1.

3. Оператор With/End with избавляет программиста от большого количества повторений имени одного и того же объекта.

Синтаксис:

With объект

оператор1

оператор2



операторN

Например, вместо последовательности операторов

UserForm1.TextBox1.Text = Date

UserForm1.TextBox2.Text = “ “

UserForm1.ComboBox1.Text = “ “

можно записать так

TextBox1.Text = Date

. TextBox2.Text = “ “

. ComboBox1.Text = “ “

REM На листе Лист1 в столбце А, начиная со второй строки, записаны ‘тарифы сотрудников. Заполним поле со списком ComboBox1 в ‘пользовательской форме UserForm1

‘Первая строка программы – на листе Лист1 в столбце А ‘подсчитывается количество заполненных ячеек, результат ‘присваивается переменной N

N=Application.CountA(Sheets(“Лист1”).Range(“A:A”)).

D=”A2:A”&Cint(N)

Sheets(“Лист1”).Range(D).Name=”Тарифы”

TextBox1.Text = Date

. TextBox2.Text = “ “

. ComboBox1.Text = “ “

. ComboBox1.Rowsource = “Тарифы “

4. Условный оператор If/Then/Else – позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие

Синтаксис:

If условие Then операторы1 [Else операторы2]

Если условие истинно, то выполняются операторы1, в противном случае выполняются операторы2.

Допускается также использование сложного условного оператора, который записывается в виде блока:

If условие1 Then

операторы1

ElseIf условие2 Then