Оператор If...Then...Else представляет собой простейшую, но и самую распространенную форму проверки условий в Visual Basic. Его сокращенная форма — оператор If...Then — имеет следующий синтаксис:
If Выражение1 Оператор Выражение 2 Then
' Выполнить некоторые действия
End If
В этом примере Оператор может быть любым из операторов, рассмотренных ранее: AND, OR, =, <>и т. д. Выражение1 и Выражение2 — переменные или константы, допускающие сравнение данным оператором. Например, сравнение строк выполняется следующим образом:
PIN = "123456"
If PIN = "123456" Then
MsgBox "Верное значение PIN"
End If
В этом случае PIN сравнивается с заранее известным значением, "123456". Если условие истинно, на экран выводится сообщение.
Иногда мы реагируем лишь на выполнение условия, но чаще приходится обрабатывать и противоположную ситуацию. Для обработки противоположных ситуаций используется оператор Else. Синтаксис выглядит так:
If Выражение1 Оператор Выражение 2 Then
Выполнить некоторые действия
Else
Выполнить другие действия
End If
Все, что вам придется сделать, — включить секцию Else после первого выполняемого блока. Затем следующий выполняемый блок размещается между ключевыми словами Else и End If. В нем выполняются действия для условия, противоположного проверяемому. В предыдущем примере это выглядело бы так:
PIN = "654321"
If PIN = "123456" Then
MsgBox "Верное значение PIN"
Else
MsgBox "Неверное значение PIN!"
End If
Итак, теперь вы знаете, как обработать условие и исключение из него. Этот полез-ный прием поможет уменьшить количество ошибок в программе. Если вам потребуется вычислить несколько условий, оператор If...Then...Else можно поместить внутри другого оператора (вложенная проверка). Вложенные операторы If...Then позволяют выполнить серию проверок в определенном порядке. Например:
If ValidUserID(UserID) Then
If ValidPassword(UserID, Password) Then
MsgBox "Неверный пароль!"
Else
MsgBox "Пользователь зарегистрирован!"
End If
Else
MsgBox "Неверное имя пользователя!"
End If
Сначала мы проверяем, что пользователь ввел правильное имя. Проверка выполняется функцией ValidUserID(). Если функция возвращает True (правильное имя), программа переходит к проверке пароля. В противном случае она извещает пользователя о том, что он ввел неверное имя.
Если функция ValidPassword() возвращает True, пользователю разрешается войти в систему. В противном случае попытка регистрации завершается неудачей. Вложенные операторы If...Then можно создать и другим способом — с помощью конструкции ElseIf:
If x = 1 Then
Выполнить некоторые действия
ElseIf x = 2 Then
' Выполнить другие действия
End If
Выбор между этими конструкциями — вопрос вкуса и/или привычки. Оба способа работают одинаково хорошо.
Функция IIf
Вместо блока If...Then...Else можно воспользоваться конструкцией непосредственного If, или IIf. Единственное отличие заключается в том, что IIf вычисляет оба возвращаемых выражения. Рассмотрим следующий фрагмент:
Function TasteIt (Food As String) As String
CheckIt = IIf(Food = "Гамбургер". "Нет, спасибо", "Вкусно!")
End Function
Значения второго и третьего параметров, "Нет, спасибо" и "Вкусно!", будут вычислены независимо от того, какое из них будет возвращено функцией IIf.
ПОДСКАЗКА
Помните о том, что функция IIf() вычисляет оба выражения перед тем, как возвращать результат. Это не вызывает особых проблем при однократном выполнении команды, однако при вызове IIf в цикле ваша программа будет работать медленнее.
Функция TasteIt() чрезвычайно проста. Она проверяет, имеет ли переменная Food значение "Гамбургер", и если имеет — возвращает строку "Нет, спасибо". В противном случае возвращается строка "Вкусно!"
В качестве значений, возвращаемых функцией IIf, могут указываться как константы, так и вычисляемые выражения.