После этого элемент управления можно перемещать, изменять его размеры, копировать в буфер обмена, вставлять из буфера обмена и удалять из формы.
Пример. В качестве примера работы с формой сконструируем простое приложение, вычисляющее значение функции, например Cos(x).
Перейдем в VBA и, выполнив команду Insert (Вставка) ® UserForm, добавим в проект форму. Расположим на форме следующие элементы управления
![]() |
Таблица 6
Элемент управления | Предназначение |
CommandButton1 (кнопка) | При нажатии на кнопку запускается процедура обработки события (Private Sub CommandButton1_Click()), которая считывает значение аргумента из поля TextBox1. Проверяется, введено ли в это поле число. Если введено не число, то на экране отображается соответствующее сообщение, прерывается выполнение процедуры, и фокус (курсор) устанавливается на поле TextBox1, предлагая исправить вводимые данные Если введено число, то находится значение функции при введенном значении аргумента, результат выводится во второе поле TextBox2 |
TextBox1 (поле) | Поле для ввода пользователем значения аргумента |
Label1 (надпись) | Пояснительная надпись для поля ввода |
TextBox2 (поле) | В это поле будет выводиться значение функции. Поле сделаем недоступным для пользователя, т.е. пользователь не сможет ни ввести, ни скорректировать данные в этом поле |
Label2 (надпись) | Пояснительная надпись для поля вывода |
Форма создана, функция каждого элемента управления известна.
Для написания кода программы, связанного с пользовательской формой, достаточно дважды щелкнуть, например, кнопку CommandButton1. Откроется редактор кода на листе модуля UserForm1. Более того, он откроется на том месте, где программируются действия, связанные с элементом управления, который был дважды нажат. Если код еще не набран, то при открытии редактора кода появятся инструкции заголовка и окончания процедуры, которая будет связана с элементом управления.
В данном случае в редакторе кода будет:
Private Sub CommandButton1_Click()
End Sub
Введем инструкции (команды), которые будут выполняться при нажатии на кнопку:
Private Sub CommandButton1_Click() | |
If Not IsNumeric(TextBox1.Text) Then | Проверка является ли введённое значение числом |
MsgBox "Аргумент должен быть числом", _ vbExclamation | Вывод окна сообщения |
TextBox1.SetFocus | Фокус (курсор) устанавливается на поле TextBox1 |
Exit Sub | Досрочный выход из процедуры CommandButton1_Click() |
End If | Окончание оператора If |
x = CDbl(TextBox1.Text) | При считывании числа из поля ввода при помощи функции CDbl строковый тип, возвращаемый свойством Text, преобразуется в числовой |
y = Cos(x) TextBox2.Text = CStr(y) | Чтобы вывести результат в поле, переводим число в строковый формат при помощи функции CStr |
End Sub | Окончание процедуры CommandButton1_Click() |
Теперь добавим процедуру, выполняемую при открытии формы – она определит надписи на элементах управления и их свойства.
Private Sub UserForm_Initialize() | Процедура UserForm_Initialize конструирует форму до ее загрузки |
UserForm1.Caption = "Значение функции Cos(x)" | Инструкция устанавливает текст, отображаемый в строке заголовка формы |
Label1.Caption = "Аргумент" Label2.Caption = "Значение функции" CommandButton1.Caption = "OK" | Инструкции задают видимые надписи для объектов |
TextBox2.Enabled = False | Инструкция делает TextBox2 недоступным для пользователя |
End Sub | Окончание процедуры UserForm_Initialize |
После конструирования формы и написания кода в модуле формы выберем команду Run ® Run Sub/UserForm, либо нажмем клавишу <F5>, либо кнопку панели инструментов Standard, и форма отобразится поверх активного рабочего листа Excel.
Введем значение аргумента и нажмем на кнопку OK.
Рисунок 6 – Вид разработанной пользовательской формы
Надписи на элементах управления можно задавать и двойным щелчком на элементе при разработке формы.
ЗАДАНИЕ
Повторить все разобранные примеры