Условные операторы If .. Then.
Условные операторы If. . .Then, а также их вариации If. . .Then. . .Else и If. . .ElseIf используются значительно чаще любых других операторов. Довольно часто операторы If. . .Then встречаются и в других главах, но в этой они уж точно в центре внимания.
Оператор If ... Then выполняет некоторый блок программного кода, если условие, которое вы предложили этому оператору, принимает значение True, и не делает ничего, если условие принимает значение False. Синтаксис оператора следующий:
If условие Then
( операторы, выполняющиеся, когда условие = True)
End If
Простой пример использования оператора If. . .Then можно найти выше в разделе "Анатомия управляющих структур" этой главы.
Обратите внимание на следующие моменты, касающиеся операторов If... Then.
* Здесь условие должно быть условным выражением типа описанных выше в разделе "Курс на использование условных выражений". Если условие принимает значение True, то VBA выполнит операторы, размешенные между If. . .Then и End If.
* Обратите внимание, ключевое слово Then размещается в одной строке с If и выражением условие. При размещении Then в следующей строке (без указания переноса с помощью символа подчеркивания в первой) VBA генерирует ошибку.
* Не забывайте печатать завершающий оператор End If, При его отсутствии VBA не поймет, какой оператор должен быть последним в блоке.
Однострочные операторы If...Then
Если структура If. . .Then должна выполнить только один оператор, когда условие принимает значение True, всю эту структуру можно уместить в одну строку. В таком случае оператор End If не требуется - точнее, его быть не должно. Оператор
If curЦена > 20 Then MsgBox "Цена слишком высока!"
в результате идентичен структуре
>If curЦена > 20 Then
MsgBox "Цена слишком высока!"
End If
Если нужно, чтобы на основании одного условия программа выбирала между двумя альтернативными блоками программного кода, используйте оператор If. . .Then. . .Else.
В том случае, если условие принимает значение True, то выполняется один блок программного кода, а если условие принимает значение False, то выполняется другой. Вот формальный синтаксис этого оператора:
>If условие Then
( операторы, выполняющиеся, когда условие = True)
Else
(операторы, выполняющиеся, когда условие = False)
End If
Если условие имеет значение True, VBA выполняет первый блок операторов и, пропустив все остальные операторы структуры, переходит к строке программного кода, следующей сразу за оператором End If. А если условие имеет значение False, то выполняются только операторы, следующие за оператором Else.