Вывод формы на экран (запуск формы)
При отладке программы форму можно запускать непосредственно из VBA. Для этого установите курсор ввода в нужную процедуру (UserForm_Initialize или КомандныеКнопки) и щелкните по кнопке RunSub/UserForm.
Теперь попробуем связать вызов формы с кнопкой на панели инструментов. Для этого перетащите Настраиваемую кнопку на панель инструментов и выполните команду Назначить макрос. В появившемся списке вы найдете процедуру КомандныеКнопки, но не найдете процедуру UserForm_Initialize.
Вспомним, что
1) процедуры с ключевым словом Private не могут запускаться сами по себе. Их можно только вызывать из других программ;
2) метод Show вызывает, в том числе, инициализацию формы. Поэтому, если вы инициализируете форму в процедуре UserForm_Initialize, вам придется написать ещё одну программу, которая отображает форму на экране:
SubЗапускФормы()
frmКомандныеКнопки.Show
End Sub
В результате выполнения этой программы управление будет передано в процедуру UserForm_Initialize, а саму эту программу можно связать с кнопкой на панели инструментов или командой меню.
Поле (TextBox) и надпись (Label).
С элементами управления поле ввода (TextBox) и надпись (Label) мы познакомимся на примере разработки формы для ввода пароля.
1. Форма должна иметь следующий вид:
Рис. 10‑8. Форма для ввода пароля
2. Максимальная длина пароля должна быть равной 7 символам.
3. Вместо вводимой буквы в поле ввода должна отображаться звездочка.
4. При корректном пароле вывести на экран сообщение «Пароль введен правильно!», а при некорректном вернуть фокус в поле Введите пароль.
5. Проверка пароля осуществляется после щелчка по кнопке OK.
6. Щелчок по кнопке Отмена выгружает форму из оперативной памяти.
7. Кнопку ОК связать с клавишей [Enter], а кнопку Отмена – с клавишей [Escape].
Начальные условия
1) При создании формы присвойте следующие имена элементам управления:
кнопке ОК – cmdOK
кнопке Отмена – cmdОтмена
полю ввода – txtПароль
2) Саму форму назовите frmПароль.
Выполнение задания:
1. В редакторе VBA создайте следующую форму (Рис. 10‑9) и назовите её frmПароль:
Рис. 10‑9. Конструирование формы Пароль
2. Добавьте командные кнопки OK и Отмена.
3. Для вставки поля ввода воспользуйтесь кнопкой . В окне свойств задайте его имя txtПароль.
4. Чтобы пользователю было понятно, какую информацию он должен водить в поле, сделаем к нему надпись Введите пароль:. Для этого воспользуйтесь инструментом Надпись . Так как в программе не предвидится обращение к этому элементу управления, не будем менять его имя, а вот свойство Caption пропишем (Введите пароль:).
5. В модуле формы наберите код инициализации формы. Для этого дважды щелкните по форме (на экране появится пустая процедураPrivate SubUserForm_Click()), в списке процедур выберите процедуру Initialize, а затем введите код:
Private SubUserForm_Initialize()
cmdOK.Default = True
cmdОтмена.Cancel = True
With txtПароль
.PasswordChar = "*"
. MaxLength = 7
End With
End Sub
6. Дважды щелкните по кнопке cmdOK в форме и введите код для обработки события «Щелчок по кнопке OK»:
Private SubcmdOK_Click()
Dim Пароль As String
'Определяем пароль, который должен ввести пользователь:
Пароль = "Student"
If txtПароль.Text = LCase(Пароль) Then
MsgBox "Пароль введен правильно!"
Unload Me
Else
With txtПароль
.Text = Empty
.SetFocus
End With
End If
End Sub
7. Дважды щелкните по кнопке cmdОтменаи введите код для обработки события «Щелчок по кнопке Отмена»:
Private SubcmdОтмена_Click()
Unload Me
End Sub
8. Протестируйте работу программы при правильном и неправильном пароле.
Обратите внимание на метод SetFocus, который служит для активизации окна/формы/элемента управления. В данном случае, при неправильном пароле, поле ввода txtПароль очищается и получает фокус – мерцающий курсор ввода приглашает пользователя повторить попытку. Этот метод используется и при инициализации формы, чтобы установить активный элемент управления.