If … Then в VBA – это оператор условного перехода, с помощью которого можно менять последовательность выполнения программы, исходя из результатов соблюдения некоторых условий.
То есть, при вычислении некоего условия, если оно соблюдается, будет получен результат (значение) True и как следствие, программа приступит к выполнению блока операторов, которые заданы в If…Then.
Если же, при вычислении, условие не соблюдается, то будет получен результат (значение) False и оператор If…Then ничего не будет делать.
Содержание урока
Синтаксис If…Then в VBA
Вариант 1. Однострочный
If (условное выражение) Then (операторы, которые будут выполняться при соблюдении условия)
Вариант 2. Многострочный
If (условие) Then
(операторы)
End If
Первый (однострочный) вариант применяется в том случае, если в операторе If…Then выполняется только один оператор.
Пример однострочного оператора If…Then
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge < 18 Then MsgBox "Ви ще неповнолітній (неповнолітня)"
End Sub
В данном примере, весь наш код помещается в одну строку и оператор здесь только один.
Второй (многострочный) вариант применяется в том случае, если нужно выполнить не один оператор, а целый блок последовательно следующих операторов.
В таком случае, проверяемое условие и выполняющиеся операторы записываются в отдельных строках.
Если результат условного выражения True, то программа начнёт выполнять группу операторов последовательно, начиная с того оператора, который указан после ключевого слова Then и заканчивая оператором завершения End If.
Пример многострочного оператора If…Then
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge < 18 Then
MsgBox "Ви ще неповнолітній (неповнолітня)"
MsgBox "Приходьте коли вам виповниться 18 років"
End If
MsgBox "Це повідомлення користувач побачить незалежно від того, який вік він вказав"
End Sub
В данном примере, пользователь увидит окно с просьбой ввести свой возраст. Если возраст меньше 18 лет, то результат условного выражения будет True и потому программа начнёт последовательно выполнять операторы, указанные после ключевого слова Then. То есть сначала пользователь увидит сообщение "Ви ще неповнолітній (неповнолітня)", потом "Приходьте коли вам виповниться 18 років", а после этого программа продолжит последовательное выполнение кода, и пользователь увидит ещё и сообщение "Це повідомлення користувач побачить незалежно від того, який вік він вказав".
Если же пользователь введёт возраст больше 18 лет, то результат условного выражения будет False. Поэтому программа пропустит всё что находится между Then и End If (включительно), и продолжит своё выполнение с оператора, который следует сразу после End If. То есть пользователь увидит только сообщение "Це повідомлення користувач побачить незалежно від того, який вік він вказав".
Вариации If...Then...Else и If...Elself
У условного оператора If...Then есть вариации:
- If...Then...Else
- If...Elself
Так же как If…Then, они могут быть записаны в одну или несколько строк.
Принцип записи кода тот же – если выполняется только один оператор, то можно записать код в одну строку и не использовать ключевое слово End If. Если же нужно последовательно выполнить блок операторов, то в таком случае условное выражение и выполняемые операторы записываются в разных строках.
Синтаксис If…Then…Else в VBA
If (условное выражение) Then
(операторы, которые будут выполняться, когда результат условного выражения = True)
Else
(операторы, которые будут выполняться, результат условного выражения = False)
End If
Пример
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge < 18 Then
MsgBox "Ви ще неповнолітній (неповнолітня)"
MsgBox "Бажаєте спробувати ще?"
Else
MsgBox "Добре що вам вже є 18 років"
End If
MsgBox "Це повідомлення користувач побачить незалежно від того, який вік він вказав."
End Sub
В данном примере, после того как пользователь вводит свой возраст, происходит проверка. В результате, если пользователь ввел цифру меньше 18, то будут выведены сообщения MsgBox "Ви ще неповнолітній (неповнолітня)", MsgBox "Бажаєте спробувати ще?" и MsgBox "Це повідомлення користувач побачить незалежно від того, який вік він вказав." (Последнее сообщение выводится независимо от того какой у пользователя возраст. Оно вне условного выражения).
Если же пользователь ввёл цифру 18 (или больше), то будет выведено сообщение MsgBox "Добре що вам вже є 18 років" и MsgBox "Це повідомлення користувач побачить незалежно від того, який вік він вказав."
Синтаксис If…Then…ElseIf в VBA
If (условное выражение 1) Then
(операторы, которые будут выполняться, когда результат первого условного выражения = True)
ElseIf (условное выражение 2) Then
(операторы, которые будут выполняться, когда результат второго условного выражения = True)
ElseIf (условное выражение 3) Then
(операторы, которые будут выполняться, когда результат третьего условного выражения = True)
Else ‘Это необязательный элемент конструкции
(операторы, которые будут выполняться, если результат всех вышеуказанных условных выражений = False)
End If
Пример
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge <= 6 Then
MsgBox "Ви дошкільня"
ElseIf userAge <= 17 Then
MsgBox "Ви школяр"
ElseIf userAge <= 23 Then
MsgBox "Ви студент"
ElseIf userAge <= 55 Then
MsgBox "Ви спеціаліст"
End If
End Sub
В данном примере, последовательно выполняется проверка условий. Если первое условие True, то есть пользователь ввёл возраст меньше 6 лет, то выполняется первый блок операторов (выводится сообщение MsgBox "Ви дошкільня"). Если первое условие False (введённый возраст больше 6), то программа переходит к вычислению второго условия. И так до самого последнего условия, пока не будет получен результат True. Если же ни в одном условном выражении не будет значения True, то программа ничего не будет делать.
Пример
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge = 6 Then
MsgBox "Вам 6 років"
ElseIf userAge = 17 Then
MsgBox "Вам 17 років"
ElseIf userAge = 23 Then
MsgBox "Вам 23 роки"
ElseIf userAge = 55 Then
MsgBox "Вам 55 років"
End If
End Sub
В данном примере осуществляется проверка на равенство. И если пользователь введёт 6, 17, 23, или 55, то программа будет выполнять соответствующий блок операторов.
Если же пользователь введёт какие-нибудь другие цифры, то результат вычисления всех условий будет False и программа не будет ничего делать (никаких сообщений пользователь больше не увидит).
Вложенные операторы If…Then
Иногда, при написании программ, возникает необходимость проверить не одно, а несколько условий, чтобы выполнить какое-нибудь действие. В таком случае, можно разместить (вложить) один оператор If…Then внутри другого.
Такое действие называется вложением операторов.
Принцип действия вложенных операторов, следующий:
- Если значение первого условия True, то программа переходит к следующей проверке (выполняется вложенное условие).
- Если значение первого условия False, то программа не будет выполнять вложенные операторы, а перейдёт к выполнению тех операторов, которые следуют после ключевого слова Else.
Пример вложения операторов If…Then
Sub myCode()
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік
If userAge > 0 Then
If userAge <= 17 Then
MsgBox "Вам від 1 до 17 років"
End If
Else
MsgBox "Вам більше 17 років"
End If
End Sub
Примечание.
Использовать вложенные операторы можно, но не рекомендуется. Лучше использовать конструкцию If…Then…ElseIf, которая является эквивалентной вложению операторов If…Then.
