Если имеется несколько альтернативных блоков операторов и необходимо выполнить один из них в зависимости от значения условия, то вместо If…then…Else можно использовать структуру Select Case … End Select. В структуре ветвления Select Case вычисляется значение условия, после чего оно сравнивается со значениями, соответствующими каждому блоку операторов:
Начало структуры ветвления
Значение выражения True Блок
в списке_знач1 операторов1
False
True
Значение выражения Блок
в списке_знач2 операторов2
False
Значения выражения
нет ни в одном
списке
Конец структуры
ветвления
Синтаксис
Select Case выражение
Case список_значений1
[Блок операторов1]
Case список_значений2
[ Блок операторов2]
….
Case Else
[Блок операторов n]
End Select
Каждый список значений состоит из одного или нескольких значений, соответствующих данному блоку операторов.
Элементы списка_значений могут иметь одну из форм:
Пример
o Перечисление: Case 2,4,6,7
o Выражение to выражение Case 2 to 8
(выражение перед to < выражения после)
o Is операция выражение Case Is>15
(операция – любая операция сравнения, кроме Is и Like)
После вычисления выражения в операторе Select Case выполняется проверка значений в списке_значений1:
Если оно совпадает со значением выражения, то выполняется блок_операторов1 и затем выход из структуры Select Case.
Если в списке_значений1 нет нужного значения, то осуществляется переход к следующему списку_значений и т.д..
Если ни в одном списке_значений нужное значение так и не найдено, то VBA может выполнить блок операторов в необязательной части Case Else и выйти из структуры.
Если значение выражения совпадает со значениями из нескольких списков, то выполняется блок операторов, соответствующий первому совпадению.
Пример