Select Case – это оператор условного перехода. Его используют, если нужно сравнить одно и то же выражение с несколькими другими выражениями.
Синтаксис Select Case в VBA
Select Case значение
Case условие 1
(операторы 1)
Case условие 2
(операторы 2)
Case условие N
(операторы N)
Case Else 'необязательный оператор конструкции
(операторы)
End Select
Принцип выполнения данного оператора, следующий:
- Сначала происходит вычисление выражения указанного после Select Case – значение. Выражение может быть числовым или строковым.
- После этого, полученный результат поочерёдно сравнивается с условиями, которые прописаны в операторе Case.
- Если значение выражения равно значению условия 1, то выполняются операторы первого блока (операторы 1). Если НЕ равно, то программа сравнивает значение выражения с значением условия 2. И так до тех пор, пока не будет выявлено совпадение, или не будет достигнут конец конструкции условного выражения – End Select.
Оператор Case Else является не обязательным. Его можно использовать, а можно и не использовать. Но если вы решили использовать этот оператор, то нужно помнить, что Case Else должен всегда находиться в конце конструкции Select Case.
Блок операторов, находящихся внутри конструкции Case Else, выполняется если результат вычисления выражения значение не совпадает ни с одним из выражений в условиях Case.
Пример Select Case в VBA
Sub myCode()
Dim userAge As Single 'оголошуємо змінну
userAge = InputBox("Скільки вам років?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік і записуємо введений результат у змінну
Select Case userAge
Case Is < 18
MsgBox "Ви ще дитина, або підліток"
Case 18 To 80
MsgBox "Ви доросла людина"
Case Is > 80
MsgBox "Ви вже дідусь, або бабуся"
End Select
End Sub
В одном операторе Case можно указать несколько критериев для сравнения. В таком случае, условия разделяются запятыми.
Пример
Sub myCode()
Dim userAge As Single 'оголошуємо змінну
userAge = InputBox("Введіть число?") 'виводимо вікно в якому просимо щоб користувач ввів свій вік і записуємо введений результат у змінну
Select Case userAge
Case 0 To 18, 25, Is > 60
MsgBox "Повідомлення, якщо введено число від 0 до 18, 25, або більше 60"
Case Else
MsgBox "Повідомлення, якщо користувач ввів число від 18 до 24, або число від 26 до 60"
End Select
End Sub
В данном примере, после того как пользователь вводит число, происходит проверка и если это число находится в диапазоне от 0 до 18, равно 25, или больше чем 60, то выводится первое сообщение «Повідомлення, якщо введено число від 0 до 18, 25, або більше 60». То есть, если значение равно хотя бы одному выражению из тех что записаны через запятую после оператора Case, то будет выполняться блок операторов внутри Case.
Во всех остальных случаях, выводится второе сообщение «Повідомлення, якщо користувач ввів число від 18 до 24, або число від 26 до 60». То есть выполняются операторы, которые находятся внутри Case Else (если мы используем эту конструкцию).
Обратите внимание на то, что оператор Case с несколькими выражениями, эквивалентен выражению, которое построено с использованием оператора Or.
