Группы и рассылки:

Вы здесь

Пример работы с оператором 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.

Автор: 
Deys
Категории: 

Комментарии

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

Либо вызовывайте процедуру.
 

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Для предотвращения регистрации спам-роботов введите символы с картинки.
CAPTCHA на основе изображений
Введите символы, изображенные на картинке.
Разместить свое видео на сайте
Вы можете разместить свои 
видео-уроки на сайте
БЕСПЛАТНО!


Подробнее>>>