End Select
Синтаксис оператора Select Case
Условный оператор Select Case
GoTo Labl
Здесь Labl – метка, определяющая оператор (или группу операторов), с которого будет продолжено выполнение программы. Метка – это любой допустимый идентификатор VBA, за которым обязательно должно следовать двоеточие.
Public Sub Опер_GoTo()
Пароль = InputBox("Введите Ваш пароль")
If Пароль <> "ABC" Then GoTo Неверный_пароль
MsgBox ("Добро пожаловать, ABC!")
'Другие операторы
Exit Sub
Неверный_пароль:
MsgBox "Вы не можете работать на этой машине"
End Sub
В этой процедуре оператор GoToиспользуется для перехода в особую ветвь программы, предназначенную для обработки ситуации, когда пользователь вводит неверный пароль. Если же пароль будет введен верно (“ABC”), то после вывода приветствия программа представит пользователю доступ к машине для продолжения работы.
Оператор GoToне пользуется большой популярностью у программистов, поскольку его использование противоречит нормам структурного программирования и часто приводит к появлению ошибок в логике программы. Поэтому оператор GoToследует применять только в том случае, когда без него никак нельзя обойтись. Обычно в VBA оператор GoToиспользуется только при обработке ошибок.
Кроме рассмотренных ранее условных операторов If в языке VBA имеется еще один условный оператор Select Case, который используется в тех случаях, когда необходимо проверять одно и то же значение, сравнивая его с различными выражениями.
Select Case <выражение>
Case <список выражений 1>
<операторы 1>
…………..
Case <список выражений N>
<операторы N>
[Case Else
<операторы N+1>]
Здесь
<выражение> - любое численное или строковое выражение,
<список выражений i> - представляют список выражений, отделенных друг от друга запятыми или (если в интервале), то in to ik,
<операторы i>- (i=1,N) – операторы, которые выполняются, если <выражение i> совпадает с любым компонентом <список выражений i>,
[Case Else
<операторы N+1>] необязательная конструкция.
Работа:
· Вычисляется <выражение>
· Если значение <выражение> совпадает со значением из Case <список выражений i>, то выполняются соответствующие <операторы i> и затем управление передается на оператор следующий за оператором Select Case
· Если значение <выражение> не совпадает ни с одним из Case <список выражений i>, то при наличии конструкции Case Else выполняются <операторы N+1>. Если конструкция Case Else отсутствует, то сразу выполняется оператор, следующий за оператором Select Case
Пример:
Ввести номер дня недели и по его значению вывести какой это день недели: Рабочий день, Суббота или Воскресенье.
Public Sub Оператор_Select_Case1()
Dim n_day As Integer
Dim day As String
n_day = CInt(InputBox("Введите номер дня недели"))
Select Case n_day
Case 1 To 5
day = "Рабочий день"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
Case 6
day = "Суббота"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
Case 7
day = "Воскресенье"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
End Select
End Sub
Public Sub Оператор_Select_Case2()
Dim n_day As Integer
Dim day As String
n_day = CInt(InputBox("Введите номер дня недели"))
Select Case n_day
Case 6
day = "Суббота"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
Case 7
day = "Воскресенье"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
Case Else
day = "Рабочий день"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
End Select
End Sub