RSS

Пример работы с оператором Select..Case в VBA

   В прошлой статье я рассказал о работе с условным оператором 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.