Расположение нескольких операторов на одной строке
Использование знака двоеточия позволяет разместить несколько операторов на одной строке. Пример – х=х+1:y=х+2.
Управляющие структуры
VBA относится к категории языков структурного программирования и позволяет использовать базовые алгоритмические управляющие структуры, к которым относятся:
- линейная структура (структура следования, или линейный алгоритм);
- разветвляющаяся структура, реализуемая операторами условного перехода и оператором альтернативной выборки;
- циклические алгоритмы, реализуемые оператором цикла с заданным количеством повторений и операторами с неизвестным количеством повторений – итерационными циклами.
Линейный алгоритм – это алгоритм, в котором операторы выполняются последовательно друг за другом
Операторы, реализующие разветвляющие структуры.
1. Однострочный оператор If Then Else – оператор условного перехода.
Синтаксис: If условие Then инструкции[Else Инструкции_else].
Если Условие принимает значение True, то выполняется инструкция (или инструкции) после Then, если False, то инструкция (или инструкции) после Else. Ветвь Else необязательна. Допускается также использовать формы синтаксиса в виде блока:
If Условие Then
[Инструкции]
[ElseIf Условие -n Then
[Инструкции_elseif]
…
[Else
[Инструкции_else]]
End If.
2. Оператор Select Case – оператор альтернативной выборки.
Синтаксис: Select Case выражение
[Case Условие_выбора_1
[Инструкции-1]]
…
[Case Условие_выбора_n
[Инструкции-n]]
[Case Else
[Инструкции_else]]
End Select.
Инструкции-n (необязательная часть) – одна или несколько инструкций, выполняемых в том случае, если выражение совпадает с любым компонентом списка Условия_выбора_n.
Инструкции_else (необязательная часть) – одна или несколько инструкций, выполняемых в том случае, если выражение не совпадает ни с одним из предложений Case.
Операторы цикла
1. Оператор For-Next – оператор повтора (цикла).
Синтаксис: For Счетчик=Начало To Конец [Step шаг]
<Инструкции>
[Exit For]
<Инструкции>
Next [Счетчик].
Цикл For-Next обеспечивает многократное выполнение инструкций, пока счетчик изменяется от начального значения до конечного с указанным шагом. Если шаг не указан, то он полагается равным 1. По оператору Exit For можно выйти из оператора цикла до того, как счетчик достигнет последнего значения.
2. Оператор For Each-Next – оператор для перебора объектов из группы подобных объектов, например, ячеек из диапазона или элементов массива.
Синтаксис: For Each Элемент In Группа
<Инструкции>
Exit For
<Инструкции>
Next <Элемент>
Альтернативный способ выхода из цикла предоставляет инструкция Exit For.
3. Оператор Do Until-Loop – оператор для организации циклов с неизвестным заранее числом шагов.
Синтаксис: Do Until Условие
<Инструкции>
Exit Do
<Инструкции>
Loop.
Обеспечивает многократное выполнение инструкций, пока условие не соблюдается. Сначала проверяет условие, а затем выполняет инструкции. Альтернативный способ выхода из цикла дает инструкция Exit Do.
4.Оператор Do-Loop While – оператор для организации циклов с неизвестным заранее числом шагов.
Синтаксис: Do
<Инструкции>
Exit Do
<Инструкции>
LoopWhile <Условие>
Повторяет выполнение набора инструкций, пока условие имеет значение True. Сначала выполняются, по крайней мере, один раз инструкции, а потом проверяется условие. Альтернативный способ выхода из цикла дает инструкция Exit Do.
5. Оператор Do While-Loop – оператор для организации циклов с неизвестным заранее числом шагов.
Синтаксис: Do While <Условие>
<Инструкции>
Exit Do
<Инструкции>
Loop.
Повторяет выполнение инструкций, пока условие имеет значение True. Сначала проверяется условие, а затем выполняются инструкции. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do.
6. Оператор Do Loop Until – оператор для организации циклов с неизвестным заранее числом шагов.
Синтаксис: Do
<Инструкции>
Exit Do
<Инструкции>
Loop While <Условие>
Повторяет выполнение набора инструкций, пока условие имеет значение True. Сначала выполняются, по крайней мере, один раз инструкции, а потом проверяется условие. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do.
7. Оператор While-Wend – оператор для организации циклов с неизвестным заранее числом шагов.
Синтаксис: While <Условие>
<Инструкции>
Wend.
Выполняет последовательность инструкций, пока заданное условие имеет значение True.
Процедуры и функции
Процедура – эта наименьшая единица программного кода, на которую можно ссылаться по имени и которая может выполняться независимо. Процедуры – это критические функциональные единицы VBA-программы в том смысле, что программный код (например, примеры, приведенные в пособии – см. с.26) может быть выполнен только будучи заключенный в какой –либо процедуре.
VBA распознает два основных типа процедур Sub(подпрограммы) и Function (функции). Процедуры первого типа, т.е. типа Sub (подпрограмма) в дальнейшем мы будем называть просто процедурами, а процедуры второго типа, т.е. типа Function (функции) – просто функциями.
Процедура является самостоятельной частью кода, которая имеет имя и может содержать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов. Кроме того, одна процедура может вызвать (т.е. выполнить) другую.
Синтаксис: [Private|Public][Static]Sub Имя _
[(СписокАргументов)]
[Инструкции]
[Exit Sub]
[Инструкции]
End Sub.
Элементы описания:
Private указывает, что процедура Sub доступна для других процедур только того модуля, в котором она описана.
Public указывает, что процедура Sub доступна для всех других процедур во всех модулях.
Static указывает, что локальные переменные процедуры Sub сохраняются в промежутках времени между вызовами этой процедуры.
Имя удовлетворяет стандартным правилам именования переменных.
СписокАргументов – это список переменных, представляющих аргументы, которые передаются в процедуру Sub при ее вызове. Имена переменных разделяются запятой.
Инструкции – любая группа инструкций, выполняемых в процедуре Sub. Инструкция Exit Sub приводит к немедленному выходу из процедуры Sub.
Синтаксис элемента СписокАргументов:
[Optional][ByVal|ByRef][ParamArroy]имяПеременной[()]_
[As тип][=поУмолчанию].
Optional – ключевое слово, указывающее, что аргумент не является обязательным. Все аргументы, описанные как Optional, должны иметь тип Variant.
ByVal указывает, что этот аргумент передается по значению.
ByRef указывает, что этот аргумент передается по ссылке. Описание ByRef используется в VBA по умолчанию.
ParamArroy позволяет задавать произвольное количество аргументов, оно не может быть использовано со словами ByVal, ByRef или Optional.
ИмяПеременной удовлетворяет стандартным правилам именования переменных.
Тип – тип данных аргумента, переданного в процедуру; поддерживаются типы Integer, Long, Currency, Single, Double, String (только строка переменной длины), Object, Variant, Date, Byte, Boolean.
ПоУмолчанию – любая константа или выражение, дающее константу. Используется только вместе с параметром Optional. Если указан тип Object, единственным значением по умолчанию может быть значение Nothing.
Функция (Function) является так же, как и процедура Sub, самостоятельной процедурой, которая может получать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов. Синтаксис инструкции Function содержит те же элементы, что и Sub. Однако в отличие от процедуры Sub, когда требуется использовать возвращаемое функцией значение, процедура Function может применяться в правой части выражения, как и любая другая встроенная функция, например, Sin.
Function вызывается в выражении по своему имени, за которым следует список аргументов в скобках. Для возврата значения из функции его следует присвоить имени функции.