...
Else
Блок операторов n
End If
Программа Ргос2 отображает запрос на ввод пароля. Если пароль введен правильно, программа предоставляет пользователю определенные возможности работы с рабочей книгой и сообщает ему об этом.
Private Sub Ргос2_ IfThenElseIf()
Dim Password As String
Dim Elem As Object
Password = GetPassword
If Password = "level 1" then
For Each Elem In Form1
Elem.Font.Name = “Ms Sans Serif”
Elem.Font.Italic = True
Elem.Font.Size = 10
Next Elem
ElseIf Password = "level 2 "
For Each Elem In Form1
Elem.Font.Name = “Ms Extra”
Elem.Font.Italic = False
Elem.Font.Size = 14
Next Elem
ElseIf Password = "level 3''
For Each Elem In Form1
Elem.Font.Name = “Ms Sans Serif”
Elem.Font.Bold = True
Elem.Font.Size = 20
Next Elem
Else
MsgBox "Пароль не корректен. Повторите ввод пароля."
End If
End Sub
Function GetPassword ()
GetPassword = Lease (InputBox ("Введите пароль: ", "Пароль"))
End Function
В РгосЗ 1 ключевое слово Elself с последующим условием используется дважды. Новое условие вносит в порядок выполнения команд дополнительные изменения, если проверка первого условия закончилась неудачей. В РгосЗ! первое условие указано сразу за ключевым словом If. В нем проверяется равенство переменной Password строке "/eve//". Если переменная не равна строке, VBA переходит к первому ключевому слову Elself, где проверяет следующее условие — равенство переменной Password строке "/eve/2". Начиная с этого момента, программа использует только новое условие, "забывая" о старом. Если равенства опять нет, управление переходит к следующему ключевому слову Elself и т. д.
В строке 3 процедуры РгосЗ! вызывается функция GetPassword, в которой использованы новые элементы. Рассмотрим более подробно эти элементы.
Function GetPassword ()
GetPassword = Lease (InputBox("Enter Password: ", " Password")) End Function
Здесь во второй строке заданы обращения к двум встроенным функциям VEA-Lcase и InputBox. Первая преобразует все буквы переданной в нее строки в строчные. Вторая выводит на экран диалоговое окно с запросом на ввод данных пользователем. У этой функции есть несколько необязательных аргументов, из которых нас интересуют только первые два. Один из них - строка, отображаемая в окне над полем для ввода. Второй содержит строку заголовка диалогового окна. При вызове функции Input-Box на экране появляется диалоговое окно с заданными заголовком и тек-
стом - приглашением, кроме того оно содержит пустое поле, в котором пользователь может ввести данные. Значение, возвращаемое InputBox, зависит от того, какую кнопку щелкнет пользователь. Если это - ОК, возвращается введенная строка, если - Отмена (Cancel), то пустая. В нашем примере буквы этой строки передаются в функцию Lease, которая преобразует их в строчные. В блоке, начинающемся сразу за ключевым словом If, помещен цикл For-Each-Next (он подробно описан ниже в разделе "Управляющая структура For-Each-Next"). В этом цикле перебираются все листы активной рабочей книги, с каждым из которых выполняются два действия - свойству Visible присваивается значение True и вызывается метод Unprotect. Первое действие позволяет пользователю видеть лист, второе - снимает с листа защиту паролем. У метода Unprotect есть один аргумент — строка с паролем. Но в данном случае пароль для защиты листов мы не использовали, поэтому Unprotect вызван без аргументов. В других блоках программы свойство Visible и метод Unprotect вызываются выборочно, в зависимости от введенного пароля.
№21 Управляющая структура Select Case
Структура Select Case позв. в завис-ти от знач.переменной или выражения выполнить один из нескольких фрагментов программы. Select Case работает с единств. оцениваемым выражением.Синтаксис: