Управляющая инструкция Select Case

End Function

End Sub

End If

Else

Next

MsgBox "У Вас есть доступ ко всем листам этой книги."

Elself Password = "level2" Then

ActiveWorkbook.Worksheets(l). _

Visible = True

ActiveWorkbook.Worksheets(1). _

Unprotect

MsgBox "У Вас есть доступ только к 1-му листу книги."

Elself Password = "level3" Then

ActiveWorkbook.Worksheets(l).Visible = True

MsgBox "Вам доступен для чтения первый лист."

MsgBox "Пароль введен неверно. Попробуйте ещё раз!"

Function GetPassword()

GetPassword = LCase(InputBox _

("Введите пароль:", "Password"))

ЗАМЕЧАНИЯ. 1. Во 2-й строке функции GetPassword используется встроенная функция LCase, которая преобразует все буквы переданной в нее строки в строчные.

2. Чтобы не отображать символы пароля на экране при его вводе, придется сконструировать форму с текстовым полем. Подробнее см. пример создания формы для ввода пароля на с. 141.

В программе IfThenElseIf ключевое слово Elself с последующим условием используется дважды. Новое условие вносит в порядок выполнения команд дополнительные изменения, если проверка первого условия закончилась неудачей. Первое условие указано сразу за ключевым словом If. В нем проверяется равенство переменной Password строке "level1". Если переменная не равна строке, VBA переходит к первому ключевому слову Elself, где проверяет следующее условие – равенство переменной Password строке "level2". Начиная с этого момента, программа использует только новое условие, «забывая» о старом. Если равенства опять нет, управление переходит к следующему ключевому слову Elself и т.д.

Просматривая IfThenElseIf, вы, вероятно, обратили внимание на несколько интересных моментов. В блоке, начинающемся сразу за ключевым словом If, помещен цикл For-Each-Next. В этом цикле перебираются все листы активной рабочей книги, с каждой из которых выполняются два действия: свойству Visible присваивается значение и вызывается метод Unprotect. Первое действие позволяет пользователю выделить лист, второе снимает с листа защиту паролем. У метода Unprotect есть один аргумент – строка с паролем. Но в данном случае пароль для защиты листов мы не использовали, поэтому Unprotect вызван без аргументов. В других блоках программы свойство Visible и метод Unprotect вызываются выборочно, в зависимости от введенного пароля.

Структура Select Case позволяет в зависимости от значения переменной или выражения выполнять один из нескольких фрагментов кода. Ее действие подобно действию структуры 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: