Оператор вибору Select Case.

Для програмування розгалужень з великою кількістю гілок часто використовують інструкцію вибору Select Case замість вкладених умовних операторів If. Оператор Select зручно використовувати, коли всі умови розгалуження полягають у порівнянні результату обчислення деякого виразу із різними наборами значень, оскільки цей оператор має наступну структуру:

Select Case <Вираз>
Case <СписокЗначень-1>
<Інструкції-1>

Case <СписокЗначень-n>
<Інструкції-n>
[ < Case Else >
<Інструкції_Else>]
End Select

Тут Інструкції-1 (Інструкції-n) – одна або декілька інструкцій, що виконуються в тому випадку, якщо значення виразу дорівнює будь-якому компоненту із списку СписокЗначень-1 (СписокЗначень-n); Інструкції_Else (необов’язкова частина) – одна або декілька інструкцій, що виконуються в тому випадку, якщо значення виразу не співпадає з жодним із значень у списках попередніх речень Сase. Якщо різні списки значень містять одинакові значення, то виконуються лише інстукції, на які вказує перший із них.

Списки значень можна утворювати:

  • переліком окремих значень, розділених комами, наприклад, Сase 1, 3, 5, 7, 9;
  • у вигляді діапазону “від … до …”, використовуючи ключове слово To між початковим і кінцевим значеннями діапазону, наприклад, Сase 1 To 10;
  • у вигляді діапазону, заданого однією з операцій відношення та службового слово Is перед знаком відношення, наприклад, Case Is >100.

Для пояснення деяких нюансів із заданням списків значень розглянемо приклад – фрагмент коду макроса для переведення оцінки із 12-бальної шкали в 5-бальну:

Select Caset
Case Is < 4
MsgBox “незадовільно”
Case 4, 5, 6
MsgBox “задовільно”
Case 7, 8, 9
MsgBox “добре”
Case 10 To 12
MsgBox “відмінно”
Case Else
MsgBox “такої оцінки нема”
End Select

В цьому прикладі для визначення незадовільних оцінок використано операцію відношення “<”. Під таку умову підпадатимуть усі значення змінної t, менші за 4, у тому числі і від’ємні. Тому відповідь “незадовільно” отримаємо, наприклад, якщо t = 3, чи t = 3.5, чи t = -12. Оцінки “задовільно” та “добре” у нашому прикладі задані переліками відповідних цілих значень 12-бальної оцінки. Тому відповідь “задовільно” буде видана лише, якщо t=4, або t=5, або t=6 і “добре”, якщо t=7, або t=8, або t=9. Для всіх інших значень t, більших за 4 і менших за 10 (наприклад, t=5.3, або t=6.4) буде видаватися повідомлення "такої оцінки нема". Оцінка “відмінно” визначена діапазоном значень від 10 до 12, тому відмінною оцінкою макрос визнає не тільки цілі значення 10, 11, та 12, а і будь-яке значення змінної t з відрізка [10; 12], наприклад, t=10.876. Для усіх значень змінної t більших за 12, так само, як для дробових значень з інтервалу (4; 10), макрос виводитеме повідомлення "такої оцінки нема".