Обычно процедура VBA
выполняет инструкцию Sub или Function, а затем все
последующие инструкции до тех пор, пока не достигнет утверждения End Sub или End Function. Во многих случаях этого достаточно. Если
затем снова запустить макрос, то повторно выполняется та же последовательность
записанных действий.
Однако иногда требуется многократно выполнять некоторый набор
инструкций автоматически, либо решить определенную задачу по-другому в
зависимости от значения переменных или параметров, заданных пользователем во
время выполнения. VBA
включает ряд инструкций, предназначенных для управления порядком выполнения
команд программы.
Инструкция If…Then…Else.
Инструкция If…Then…Else выполняет определенные команды или наборы команд в зависимости от
значения условия. Данную инструкцию можно записать в одну или несколько строк.
Инструкция If, записанная в одну строку, имеет следующий
синтаксис:
If условие Then [инструкции] [Else инструкции_else]
Параметр условие - логическое
выражение, которое возвращает значение True или False. Если выражение равно True, то выполняются инструкции,
а часть Else игнорируется. Если условие равно False, то игнорируются инструкции, а выполняются утверждения инструкции_else. Если же часть Else опущена и
логическое условие равно False, то не выполняется ни одна из инструкций и
управление передается следующей строке программы после инструкции If.
Во многих реальных ситуациях требуется выполнить несколько инструкций,
если условие истинно. В этих случаях необходимо использовать многострочный
синтаксис:
If условие Then
[инструкции]
[ElseIf условие-n Then
[инструкции_elseif] ...
[Else
[инструкции_else]]
End If
При использовании инструкции If следует обратить внимание на следующие
особенности:
·
В
многострочной структуре инструкции, которые выполняются если условие истинно,
нельзя располагать утверждения на той же строке, что и ключевое слово Then. В противном случае не распознается многострочный синтаксис инструкции
If.
·
В
многострочной структуре каждой инструкции If должна
соответствовать своя инструкция End If. В однострочном синтаксисе инструкции End If не имеется.
Инструкция If может использоваться практически во всех
случаях. Однако в VBA
имеются и другие инструкции, которые в некоторых случаях оказываются более
удобными.
Инструкция Select Case
Инструкция Select Case используется для выполнения одной из
нескольких групп инструкций в зависимости от значения условия. Синтаксис данной
команды имеет вид:
Select Case выражение
[Case
списокВыражений-n
[инструкции-n]] ...
[Case Else
[инструкции_else]]
End Select
Параметр выражение - любое
числовое или строковое выражение. Вместо вычисления логического условия
выполняется сравнение значения выражения с каждой из величин, заданных
параметром СписокВыражений-n. В инструкции может быть произвольное число блоков Case. Если ни одно из условий не является истинным, то выполняются
инструкции блока Case Else.
Из простых логических условий можно составить сложные при помощи
логических операций:
And (и), Or (или), Not (не).
Безусловный
переход с помощью инструкции GoTo
Инструкцию GoTo следует использовать только в крайних случаях.
Она позволяет выполнить безусловный переход к заданной строке активной
процедуры. Ее синтаксис очень прост: GoTo строка
Операторы цикла в Visual Basic for Applications.
Часто требуется многократно повторить одну или несколько инструкций. VBA включает несколько управляющих структур для
выполнения циклов, многие из которых знакомы тем, кто работал с другими языками
программирования.
Цикл Do…Loop Цикл Do…Loop является одним из самых простых и удобных. Он имеет 4 варианта
синтаксиса:
·
Синтаксис
1:
Do While условие
[инструкции]
Loop
|
·
Синтаксис
2:
Do Until условие
[инструкции]
Loop
|
·
Синтаксис
3:
Do
[инструкции]
Loop While условие
|
·
Синтаксис
4:
Do
[инструкции]
Loop Until условие
|
Команды между инструкциями Do и Loop выполняются заданное число раз.
Безусловный
выход из цикла. Цикл можно
выполнить произвольное число раз, либо ни одного. Инструкция Exit Do позволяет безусловно передать управление команде, которая следует за
последней командой цикла.
Цикл While…Wend
Инструкция While…Wend является разновидностью инструкции Do…Loop. В ранних
версиях Basic, в которых не было
инструкции Do…Loop, весьма эффективно использовалась команда While…Wend. Формат
инструкции прост:
While [условие]
инструкции
Wend
Инструкция While…Wend в отличие от цикла Do…Loop не имеет второго варианта, в котором проверка условия выполняется в
конце цикла. Кроме того, для данного цикла нет инструкции для безусловного
выхода, подобной Exit Do.
Цикл For…Next
Инструкцию For…Next можно встретить в большинстве языков программирования. Она позволяет
циклически выполнить набор утверждений заданное число раз. Формат инструкции
следующий:
For счетчик =
начало To конец [Step шаг]
[инструкции]
Next счетчик
Параметр счетчик - это
числовая переменная, которая автоматически увеличивается после каждого повтора.
Начальное значение счетчика равно параметру начало,
а конечное - параметру конец.
|