End Select
Next
Управляющая инструкция Select Case
Структура Select Ca s e позволяет в зависимости от значения переменной или выражения выполнять один из нескольких фрагментов кода. Ее действие подобно действию структуры If-Then-Else, в которой условие переопределяется ключевым словом Elself. В программе IfThenElseIf мы использовали инструкцию If-Then-Else для определения прав пользователя согласно введенному им паролю. В следующей программе те же действия выполняются средствами структуры Select Case.
Sub SelectCase()
Dim Password As String
Dim Sheet As Object
Password = LCase(InputBox("Введите пароль:", "Password"))
Select Case Password
Case "level1"
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Visible = True
Sheet.Unprotect
MsgBox "У Вас есть неограниченный доступ ко всем листам данной рабочей книги."
Case "Ievel2"
ActiveWorkbook.Worksheets(1).Visible = True
ActiveWorkbook.Worksheets(1).Unprotect
MsgBox "У Вас есть доступ только к первому листу рабочей книги."
Case "Ievel3"
ActiveWorkbook.Worksheets(l).Visible = True
MsgBox "Вам доступен для чтения первый лист."
Case Else
MsgBox "Пароль введен неверно. Попробуйте ещё раз."
Ниже описаны компоненты инструкции Select Case, использованной в программе SelectCase.
Select Case Ключевые слова, отмечающие начало инструкции
Password Переменная или выражение, чье значение определяет выбор фрагмента кода для выполнения. Оно должно совпадать со значением, указанным после одного из ключевых слов Case. Если ни одного совпадения нет, выполняется фрагмент, написанный после слов Case Else. Если и этих слов нет, управление передается инструкции, заданной после End Select
Case "levell" Первый вариант значения. Если значение определяющего выражения совпадает с ним, выполняется фрагмент кода до следующего ключевого слова Case, а затем управление передается инструкции, написанной после End Select. Если совпадения нет, управление передается следующей инструкции Case
Case "level2" Второй вариант значения. Действует так же, как Case "levell"
Case "level3" Третий вариант значения. Действует так же, как Case "levell"
Case Else Фрагмент кода, указанный за этими словами, выполняется, если значение определяющего выражения не совпало ни с одним из предыдущих вариантов Case
End Select Ключевые слова, отмечающие конец инструкции Select Case
В программе SelectCase2 также использована структура Select Case, несколько отличающаяся от предыдущего примера.
Sub SelectCase2()
Dim Score As Integer
Score = Int(100 * Rnd())
Select Case Score
Case 0 To 33
MsgBox "Счет: " & Score & Chr(13) & _
"Вы в первой тройке."
Case 34 To 66
MsgBox " Счет: " & Score & Chr(13) & _
" Вы во второй тройке."
Case 67 To 100
MsgBox " Счет: " & Score & Chr(13) & _
"Вы в третьей тройке."