Следующая статья: Циклы в VBA
Содержание
Условные операторы
Рассмотренные ранее операторы выполняются в линейном порядке. При использовании VBA-операторов изменение порядка выполнения операторов определяется условием или набором условий, при которых VBA выполняет ту или иную ветвь кода процедуры.
Оператор условного перехода – это структура, которая выбирает ту или иную ветвь кода процедуры на основе некоторого предопределенного условия или группы условий.
Оператор безусловного перехода – это оператор, просто изменяющий последовательность выполнения кода процедуры независимо ни от какого конкретного условия. Условный переход используется гораздо чаще, чем безусловный.
Оператор If
Простейшими VBA-операторами изменения порядка выполнения кода являются операторы If … Then и If … Then … Else.
Оператор If … Then позволяет выбрать единственную альтернативную ветвь кода в процедуре или функции.
Синтаксис
If условие Then оператор(ы),
где условие - любое логическое выражение;
оператор(ы) – один, несколько или ни одного оператора VBA.
Вторая форма синтаксиса оператора If … Then называется блоком оператора if. В блоке оператора If … Then условие и операторы записываются в отдельных строках, причем заканчивается данный оператор ключевыми словами End If.
Синтаксис
If условие Then
оператор 1
оператор 2
….
Оператор n
End If
Выбор одной из двух различных ветвей операторов в зависимости от определенного условия обеспечивает оператор
If … Then … Else
и If … Then … ElseIf.
Синтаксис однострочного оператора If … Then … Else
If условие Then оператор1 Else оператор2,
где условие - любое допустимое логическое выражение;
операторы - один или несколько операторов VBA, которые должны находиться в одной и той же строке.
Блок операторов If … Then … Else легче читать и понимать, и поскольку можно располагать операторы в разных строках внутри блока оператора If … Then … Else, он не имеет ограничения по размеру и числу операторов, которые можно помещать в альтернативные ветви.
Синтаксис
If условие Then
Оператор1
Else
Оператор2
End If
VBA, как и многие языки программирования, имеет условный оператор перехода для использования в случаях, когда необходимо выбирать из большего количества различных ветвей кода: оператор Select Case. Данный оператор работает во многом так же, как и оператор If. Ключевые слова Select Case используются со многими операторами Case, где каждый оператор Case проверяет появление другого условия и выполняется только одна из ветвей Case. Ветвь Case может содержать один, несколько или ни одного оператора VBA.
Синтаксис
Select Case выражение
Case условие_1
Оператор_1
Case условие_2
Оператор_2
…
Case условие_ N
Оператор_N
[Case Else
Оператор_ N +1
End Select,
где выражение - любое численное или строковое выражение;
условие_1, условие_2, условие_ N – (каждый) представляет список логических выражений, отделенных запятыми;
оператор_1, оператор_2, оператор_ N, оператор_ N +1 - (каждый) представляет один, несколько или ни одного оператора.
В Select Case можно включать столько операторов Case условия, сколько необходимо.
Примечание. Написание неоднострочных операторов в программах производится именно так (в столбец), либо редактор будет выдавать ошибку написания.
Оператор GoTo
Оператор безусловного перехода всегда изменяет порядок выполнения операторов в процедуре или функции vba. При этом vba не проверяет никаких условий, а просто переходит к выполнению кода с другого места.
Оператор GoTo имеет следующий синтаксис
GoTo метка
Метка – любое обозначение или номер строки в той же процедуре или функции, которая содержит оператор GoTo. При выполнении оператора GoTo VBA немедленно переходит к выполнению оператора в строке, определенной с помощью метки.
Задача
Создать программу, которая, используя инструкцию if … then, выполняет следующие действия: если переменной а присваивается значение больше нуля, то находится сумма чисел а и b, если меньше нуля, то находится произведение. Результат выводится в стандартное диалоговое окно msgbox.
Технология выполнения
- В документе Операции выделите правой кнопкой мыши папку Modules и выполните команду: Insert + Module.
- В появившемся модуле пропишите программу и запустите на выполнение.
Dim a, b, c As Integer
Sub poradok()
a=-5
b=25
If a > 0 Then
c=a + b
MsgBox (c)
End If
If a < 0 Then
с=a * b
MsgBox (с)
End If
End Sub
В данной программе переменной а присвоено значение меньше нуля, следовательно, должна выполниться нижняя инструкция If.
Результат работы
- Измените программу, поменяв значение а на положительное:
Dim a, b, c As Integer
Sub poradok()
a=5
b=25
If a > 0 Then
c=a + b
MsgBox (c)
End If
If a < 0 Then
c=a * b
MsgBox (c)
End If
End Sub
Примечание. Данную программу можно составить, используя полный блок инструкции If Then Else.
Результат работы
Dim a, b, c As Integer
Sub poradok()
a=5
b=25
If a > 0 Then
c=a + b
MsgBox (c)
Else
c=a * b
MsgBox (c)
End If
End Sub
Видео: «Собаки в ресторане»
Занимательное и юмористическое видео с домашними питомцами, собаками, как они ходили в ресторан

