Процедуры VBA выполняются построчно от начала до конца, если последовательность их выполнения не будет изменена каким-либо событием или с помощью структуры управления.
Событие – это воздействующее на выполнение кода внешнее по отношению к нему действие (например: нажатие кнопки, истечение заданного промежутка времени и т.п.).
Управляющие структуры определяют порядок выполнения кода. Это инструмент для принятия решения в самой программе. В VBA используются следующие структуры управления:
- If … Then … Else
- Select … Case
- For … Next
- Do … Loop
- While … WEnd
Структура ветвления имеет несколько вариантов. Простейший синтаксис этого оператора следующий:
If Условие Then
Код
End If
Условие – любое выражение, результат вычисления которого имеет тип Boolean. Условие может содержать операции сравнения и логические операции, в нем могут вызываться функции. При выполнении программы сначала проверяется указанное в операторе условие, а затем, если условие выполнено (результат вычисления выражения равен True), исполняется код оператора. Если условие не выполнено (результат вычисления – False), то код оператора пропускается.
Если при невыполнении условия также требуется выполнить какие-либо действия, используется более сложная форма оператора ветвления:
If Условие Then
КодИсполняющийсяПриВыполненииУсловия
Else
КодИсполняющийсяПриНеВыполненииУсловия
End If
В зависимости от условия выполняется либо код, записанный в части Then, либо код, содержащийся в части Else.
При использовании структуры ветвления в ней можно проверить несколько вложенных условий:
If Условие1 Then
Код1
ElseIf Условие2 Then
Код2
…
ElseIf УсловиеN Then
КодN
Else
КодElse
End If
Заданные в операторе условия проверяются последовательно, в программе будет выполнен код, соответствующий первому истинному условию, если же ни одно из условий не будет выполнено, управление передается на код в части Else. Если часть Else отсутствует, то при невыполнении ни одного из условий, не выполняется ни одна из последовательностей операторов, код которых включен в оператор ветвления, этот код пропускается.
Еще одна структура ветвления – оператор Select Case. В данном операторе можно задать только одно выражение, управляющее ходом выполнения программы, значение которого должно быть вычислено и оценено: