End Function. Дополнительное условие Elself

End Sub

End If

Else

Next

Дополнительное условие Elself

Как Вы уже убедились на предыдущем примере, средствами If-Then-Else можно организовать выполнение инструкции в зависимости от соблюдения определенного условия. Рассмотрим другой вариант ее использования, на этот раз с ключевым словом ElseIf. Программа IfThenElseIf отображает запрос на ввод пароля. Если пароль введен правильно, программа предоставляет пользователю определенные возможности работы с рабочей книгой и сообщает ему об этом.

Sub IfThenElseIf()

Dim Password As String

Password = Get Password

If Password = "level1" Then

For Each Sheet In ActiveWorkbook.Sheets

Sheet.Visible = True

Sheet.Unprotect

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

Elself Password = "level2" Then

ActiveWorkbook.Worksheets(l).Visible = True

ActiveWorkbook.Worksheets(1).Unprotect

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

Elself Password = "level3" Then

ActiveWorkbook.Worksheets(l).Visible = True

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

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

Function GetPassword()

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

Замечания:

1. Во 2-й строке функции GetPassword используется встроенная функция LCase, которая преобразует все буквы переданной в нее строки в строчные.

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

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

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


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



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