logo search
МУ_к_ЛР (VBA)

5.3. Оператор выбора Select Case

Для решения поставленной задачи удобно использовать оператор выбора Select Case. Синтаксис оператора Select Case:

Select Case селектор

Case 1-й установленный диапазон значений селектора : оператор 1

Case 2-й установленный диапазон значений селектора : оператор 2

-----------------------------------------------

Case n- й установленный диапазон значений селектора : оператор n

Case Else: оператор n+1

End Select

Селектор – переменная, значение которой до входа в оператор Select Case должно быть известно. Если это значение совпадает с 1-м установленным заранее диапазоном значений, то выполняется оператор 1 и управление передается на End Select. Если значение не совпадает, происходит сравнение со вторым диапазоном и т.д.

Способы задания установленного значения селектора:

  1. Перечнем значений через запятую (например: Case 2,5,8 ...)

  2. Диапазоном значений ( Case 2 to 10)

  3. Ключевым словом Is, справа от которого записывается оператор отношения, например, Case is < 2.

Запишем процедуру отклика командной кнопки CommandButton1 для решения данной задачи:

Private Sub CommandButton1_Click()

Dim x, y As Single 'Объявление типов переменных Х и Y

x = Val(InputBox(" Введите значение х ")) ' Ввод текущего значения Х

Select Case x ' Начало оператора Select Case

Case 1,3,5,6: y=sin(x)

Case 8 to 10 : y=Tan(x)

Case 15 to 20: y=Log(x)

Case is >30: y=x^2.5

Case Else: y=0 ' В остальных случаях

End Select ' Конец оператора Select

MsgBox “y=” & y

End Sub

Пример 5.4. По вводимым буквам русского алфавита А, Б, Д вывести слова Одесса, Николаев, Херсон. Сделать контроль ввода.

Private Sub CommandButton2_Click()

Dim x, y As String 'Объявление типов переменных Х и Y

x = InputBox(" Введите заданный символ") 'Ввод текущей буквы

Select Case x ' Начало оператора Select Case

Case “А“: y = " Одесса "

Case “Б“ : y = " Николаев "

Case “Д“: y = " Херсон "

Case Else: MsgBox " Ошибочный ввод" ' Проверка ввода

End Select ' Конец оператора Select

MsgBox y

End Sub