Урок 13 по VBA — Оператор Select Case

Урок 13 по VBA — Оператор Select Case Макросы на VBA

Оператор Select Case VBA языка предназначен для формирования выбора операции в зависимости от значения, по сути, данный оператор выбора является гибридом условного оператора vba if then. Все довольно просто – в сценарии есть переменная, значение которой будет изменяться, и в зависимости от значения нужно выбрать, какой блок кода (выражение) выполнить.

Как и в условном операторе VBA if then, тут происходит проверка значения, например: есть текстовое поле, в которое нужно ввести данные, допустим, возраст. Далее следует проверить введенное значение, если значение меньше 18 – вывести один текст, если значение находится между 19 и 30 – другой текст, в противном случае – вывести третий текст. Как уже говорилось, для таких целей можно использовать условный оператор, однако, оператор выбора VBA Select Case является более компактным варинтом.

Синтаксис оператора VBA Select Case:

Select Case значение
Select условие 1
Набор операторов
 
Select условие 2
Набор операторов
 
Select условие 3
Набор операторов
 
….
 
Select условие N
Набор операторов N
 
Case Else
Другие операторы

 
End Select

Вначале происходит проверка параметра “значение”, который может быть как строкового, так и числового типа, после проверки параметра, происходит поочередное сравнение (начиная сначала) с каждый условием, которые прописаны в операторах Select Case VBA. Если совпадение произойдет для “условие 1”, то будет выполнен “набор операторов 1”, после чего произойдет выполнения кода, находящегося после End Select. Оператор Case Else формально означает “В противном случае”, то есть, если ни одно из условий не подходит, то выполнится набор операторов, прописанных для Case Else. Само выражение VBA — Case Else не является обязательным, как и “другие операторы”, при необходимости его можно опустить, оно всегда прописывается в конце.

Давайте рассмотрим такой пример кода:

Private Sub CommandButton1_Click()
    Dim a
    a = TextBox1.Text
    Select Case a
        Case Is < 100
            Label1.Caption = "Введенное значение меньше числа 100"
        Case 101 To 150
            Label1.Caption = "Введенное значение больше числа 100 и меньше 151"
        Case 151 To 200
            Label1.Caption = "Введенное значение больше 151 и меньше 201"
        Case Else
            Label1.Caption = "Другое значение, оператор Select Case VBA"
    End Select
End Sub
 
Private Sub UserForm_Activate()
    '*****************************
    '  начальные настройки
    '*****************************
 
    Label1.Caption = ""
    ' размер текста
    Label1.FontSize = 15
    ' цвет текста
    Label1.ForeColor = &HFF0000
    ' выравнивание по центру
    Label1.TextAlign = fmTextAlignCenter
    ' включить перенос строк
    Label1.WordWrap = True
    ' надпись на кнопке
    CommandButton1.Caption = "Показать"
    'начальное сожержимое текстового поля
    TextBox1.Text = "Введите любое значение"
End Sub

В данном примере у нас есть процедура CommandButton1_Click, которая отвечает за обработку нажатия по кнопке. Переменная a будет хранить значение текстового поля TextBox1 (свойство Text). Далее следует оператор выбора Select case VBA языка, в котором происходит проверка значения переменной a, после чего, значение сравнивается с условиями:

  • Case Is < 100 – если значение переменной a меньше числа 100
  • Case 101 To 150 – если значение находится в диапазоне от 101 до 150
  • Case 151 To 200 – диапазон проверки от 151 до 200
  • Case Else – собственно, всю другие значения.

В зависимости от результат проверки, в свойство Caption, объекта Label, будет записанное информативное сообщение.

Процедура UserForm_Activate содержит строки кода для начальной настройки компонентов формы – цвет, размер, начальный текст и так далее.

select vba

Результат выполнения макроса вы можете увидеть на рисунке. Для создания связи между макросом и формой, в блоке кода для модуля нужно прописать:

Sub OBModule()
    OBForm.Show
End Sub

Тут OBModule – имя модуля (макроса), а OBForm – название формы.

Стоит обратить внимание, что даже при совпадении условие, например: меньше 100 и больше 99, в операторе выбора VBA Select Сase произойдет выполнения лишь для первого подходящего условия, а все остальные будут проигнорированы.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий