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.
