В прошлой статье я рассказал о работе с условным оператором IF в VBA. Но что делать, если условий в задаче возникает очень много? Использовать конструкцию If многократно неудобно, и это усложняет читабельность кода. Для таких целей в VBA предусмотрена еще одна очень полезная конструкция — управляющий оператор Select…Case.
Select…Case позволяет по определенному значению, диапазону или условию выполнить разные действия. Например:
если а = 5 то выполнить действие 1
если a в диапазоне между 7 и 9 то действие 2
если a не подходит ни одно условие то действие 3
Это можно записать условным оператором If, получается следующее:
If a = 5 Then
действие 1
elseif (a > 7 And a < 9) Or (a = 7 Or a = 9) then
действие 2
Else действие 3
End If
Сложновато, не правда ли!? А теперь представьте, если условий будет гораздо больше.
Теперь запишем это же, но с помощью конструкции Select:
Select Case a
Case 5
действие 1
Case 7 To 9
действие 2
Case Else
действие 3
End Select
Код получился немного длиннее, но намного понятнее и читаемый. Теперь рассмотрим конструкцию:
- Select Case а — ключевые слова конструкции, после которых идет переменная «а» которую необходимо проверить. Тип переменной может быть, целым, вещественным, строковым, символьным, логическим;
- Case — ключевое слово, после которого указываются варианты условия;
- Case 7 To 9 — проверяет, входит ли «а» в диапазон от 7 до 9;
- Case Else — если «а» не подходит ни под одно условие, то выполняется ИНАЧЕ. Эту строку можно и не использовать;
- End Select — ключевые слова означающие завершение конструкции Select.
Пример работы Select Case:
Sub Test()
a = 5
Select Case a
Case 5: MsgBox «a=5»
Case 7 To 9: MsgBox «a между 7 и 9»
Case Else: MsgBox «a не подходит»
End Select
End Sub
И еще один пример демонстрирующий задание условия в Case:
Sub Test()
a = 3
Select Case a
Case Is > 5
MsgBox «a больше 5»
Case Is > 7
MsgBox «a больше 7»
Case Else
MsgBox «Не подходит ни одно условие»
End Select
End Sub
Обратите внимание, при указании условия «>», после Case добавляется ключевое слово Is.