- •Лекция 8. Пользовательские формы
- •Пользовательские формы
- •Свойства пользовательской формы
- •Методы пользовательской формы
- •События пользовательской формы
- •Управляющие элементы
- •События управляющих элементов
- •Примеры разработки пользовательских форм
- •Поиск в диапазоне ячейки с заданным значением
- •Поиск в диапазоне ячейки с заданным значением с учётом регистра
- •Добавление нового сотрудника
- •Использование управляющих элементов на рабочем листе
- •Стандартные диалоговые окна
- •Функция vba InputBox
- •Метод InputBox объектаApplication
- •Функция vba MsgBox
События управляющих элементов
Как и все объекты, управляющие элементы позволяют задавать реакцию на определённые события. При двойном щелчке мышью по управляющему элементу создаётся или открывается процедура обработки события по умолчанию. В основном нам придётся задавать реакцию именно на события по умолчанию. Для кнопки это нажатие кнопки, для текстового поля – изменение введённого текста, для кнопок-флажков и кнопок-переключателей – щелчок мышью по кнопке, для выпадающего списка – изменение (любым способом – вводом и выбором) выбранного элемента списка.
Примеры разработки пользовательских форм
Поиск в диапазоне ячейки с заданным значением
'Процедура обработки события «нажатие на кнопку»
Private Sub ButtonFind_Click()
Dim userRange As Range, cell As Range
DimvalueAsString
'Проверка и определение диапазона
On Error Resume Next
Set userRange = Range(RefEditRange.Text)
If Err.Number <> 0 Then
MsgBox "Неправильный диапазон"
RefEditRange.SetFocus
Exit Sub
End If
On Error GoTo 0
'Проверка и задание искомого значения
IfTextBoxValue.value= ""Then
MsgBox"Введите искомое значение"
TextBoxValue.SetFocus
Exit Sub
Else
value = TextBoxValue.value
End If
'Поиск
For Each cell In userRange
If cell.value = value Then
cell.Select
MsgBox "Найдена ячейка " & cell.Address(False, False)
Exit Sub
End If
Next cell
MsgBox"Ячейка не найдена"
EndSub
'Процедура обработки события «инициализация пользовательской формы»
Private Sub UserForm_Initialize()
RefEditRange.Text = ActiveWindow.RangeSelection.Address
End Sub
Поиск в диапазоне ячейки с заданным значением с учётом регистра
'Процедура обработки события «нажатие на кнопку»
Private Sub ButtonFind_Click()
Dim userRange As Range, cell As Range
Dim value As String, matchCase As Boolean
'Проверка и определение диапазона
...
'Проверка и задание искомого значения
...
'Учитывать регистр?
matchCase=CheckBoxCase.value
'Поиск
For Each cell In userRange
If matchCase And cell.value = value Or _ Not matchCase And LCase(cell.value) = LCase(value) Then
cell.Select
MsgBox "Найдена ячейка " & cell.Address(False, False)
Exit Sub
End If
Next cell
MsgBox"Ячейка не найдена"
EndSub
Добавление нового сотрудника
Private Sub OptionButtonStaff_Click()
ComboBoxPost.value = ""
ComboBoxPost.RowSource = "Лист4!B1:B5"
End Sub
Private Sub OptionButtonTeachers_Click()
ComboBoxPost.value = ""
ComboBoxPost.RowSource = "Лист4!A1:A4"
End Sub
Private Sub TextBoxSurname_Change()
If TextBoxSurname.value <> "" And TextBoxName.value <> "" And _ TextBoxFatherName.value <> "" Then
ButtonAdd.Enabled = True
Else
ButtonAdd.Enabled = False
End If
End Sub
Использование управляющих элементов на рабочем листе
Практически все управляющие элементы можно разместить непосредственно на рабочем листе. Для этого необходимо нажать кнопку Вставить, находящуюся в группеЭлементы управленияна вкладкеРазработчик. Управляющие элементыкнопка-флажок,кнопка-переключатель,списокивыпадающий списокмогут быть легко связаны с ячейкой рабочего листа. Это избавляет от необходимости программировать процедуры обработки событий.
В ячейке, связанной с кнопкой-флажком, отображается значение истинаилиложь.
В ячейке, связанной с группой кнопок-переключателей, отображается номер выбранного переключателя.
Список и выпадающий список можно связать с диапазоном, из которого будут браться элементы списка, и с ячейкой-результатом, куда будет записан номер выбранного элемента.