Вы здесь
Пример работы с оператором 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.
- Добавить комментарий
- 100138 просмотров
Комментарии
Case Else: MsgBox "a неподходит"
"не" с глаголами пешется раздельно
Case Else: MsgBox "a неподходит"
MsgBox "Не подходит ни одно условие"
"Не" с глаголами пишется по-разному =)
Спасибо. :)
Case is > 7
дойдет? Ведь для любого а > 5 сработает
Case is > 5
и дальше не пойдет. Так?
Условие с Case is > 5 можно переделать на Case is < 5
А если при выполнении, допустим первого или пятого условий мне нужно выполнить несколько действий? Для остальных условий по одному действию. В Паскалях для этого есть then begin {куча операторов} end; - а в VBA есть что-то подобное?
Sub Test()
a = 6
Select Case a
Case Is > 5
MsgBox "a больше 5"
MsgBox "a больше 5_2 раз"
MsgBox "a больше 5_3 раз"
Case Is > 7
MsgBox "a больше 7"
Case Else
MsgBox "Не подходит ни одно условие"
End Select
End Sub
Либо вызовывайте процедуру.
Добавить комментарий