- •Пользовательские формы
- •Режимы работы с формой
- •Режим конструктора
- •Элементы управления
- •Событийные процедуры
- •Объекты UserFormиControls
- •Режим выполнения
- •Разработка приложения
- •Пример 1
- •Конструирование основной формы
- •Свойства формы и элементов управления
- •Создание событийных процедур
- •Конструирование формы для выбора рабочего листа
- •Создание событийных процедур
- •Элемент ListBox
- •Событийная процедура инициализации формы
- •Завершение разработки приложения
- •Связь формы с рабочей книгой
- •Элемент TextBox
- •Элемент ListBox
- •Пример 2
- •Конструирование форм
- •Процедуры
Событийные процедуры
На процедурном листе формы размещаются процедуры обработки событий, связанных с формой и объектами формы. Для перехода на процедурный лист используйте команду Code из меню View или клавишу F7. На этом же листе могут размещаться дополнительные процедуры, необходимые для выполнения событийных процедур формы или объектов формы. Эти процедуры располагаются в разделе General.
Рекомендуется на этом листе размещать процедуры, не являющиеся общими для всего проекта в целом. Общие процедуры должны размещаться в стандартных модулях проекта.Вызов процедур происходит стандартным образом – на отдельной строке указывается имя процедуры общего типа и ее параметры, если они существуют; процедуры функции используются в операторах присваивания или в выражениях.
Важно
Если необходимо обратиться к процедуре, находящейся на процедурном листе некоторой формы, из процедуры, размещенной в стандартном модуле или на другом процедурном листе, то следует указать ссылку на имя этой формы перед именем процедуры (разделитель, как обычно, точка). Например, UserForm1.text_Analysis.
Каждый элемент управления и сама форма обладают некоторыми событиями, при этом одно из событий является событием по умолчанию. Например, событием по умолчанию для командной кнопки является нажатие на нее (Click). Все событийные процедуры для формы и ее элементов записываются на процедурном листе формы.
Важно
Двойной щелчок на элемент управления или свободное пространство формы переводит вас в процедуру события по умолчанию соответствующего объекта.
Для записи любой событийной процедуры следует
перейти на процедурный лист формы (команда View Codeили клавишаF7),
в окне объектов (вверху слева) выбрать объект формы,
в окне событий (вверху справа) выбрать событие объекта.
Автоматически появятся команды начала и конца событийной процедуры, ассоциированной с выбранным событием объекта. Процедура имеет стандартное имя, состоящее из имени объекта и названия события.
Важно
Имя событийной процедуры не должно изменяться разработчиком, за исключением случаев, когда команды, записанные в этой процедуре, не должны быть предназначены для чего-нибудь другого, кроме выполнения при возникновении события.
Объекты UserFormиControls
Все формы конкретного приложения составляют коллекцию UserForms, которая обладает общими свойствами и методами, присущими любой коллекции, например, Count, Item, Add. Программным способом всегда можно добавить новую форму или изменить свойства любой формы коллекции.
Все элементы управления формы составляют коллекцию Controls. Каждый элемент управления имеет индекс в этой коллекции, определяемый порядком возникновения элемента в форме. Каждый элемент управления обладает свойствами, методами и событиями.
В таблице рассмотрены некоторые наиболее употребительные методы объекта UserForm и свойства элементов управления, присущие многим из них (общие свойства).
Некоторые свойства и методы формы и объектов формы
Метод или свойство |
Комментарии |
Пример |
Метод Repaint |
Высвечивание модифицированного изображения формы |
Userform1.Repaint, Me.Repaint |
Применяется, когда пользователь немедленно должен увидеть результаты модификации формы, не дожидаясь окончания событийной процедуры. | ||
Метод Hide |
Скрытие формы |
Userform1.Hide, Me.Hide |
Форма остается загруженной в память, переменные, определенные на уровне модуля, не теряют своих значений. | ||
Метод Load |
Загрузка формы |
Load Userform1 |
Форма загружается в память, но не высвечивается на экране. | ||
Метод UnLoad |
Выгрузка формы |
UnLoad Userform1, UnLoad Me |
Форма выгружается из памяти, значения переменных теряются | ||
Метод Show |
Высвечивание формы |
Userform1.Show |
Если форма спрятана, то она высвечивается. Если форма не загружена, то она загружается и высвечивается. | ||
Метод SetFocus |
Установка фокуса на элементе управления |
CommandButton1.SetFocus |
Свойство Value |
Значение элемента управления |
TextBox1.Value="Введите текст" If CheckBox1.Value=True Then TextBox1.BackColor=RGB(255,0,0) Else TextBox1.BackColor=RGB(0,255,0) |
Определяет или состояние элемента управления или его содержимое. Для разных элементов управления свойство может принимать различные значения:
В списках, допускающих множественный выбор, свойство Value не применяется. | ||
Свойство Visible |
Скрытие или высвечивание элемента управления |
CommandButton1.Visible=False |
Принимает значения True или False. По умолчанию True, т.е. элемент виден на экране. | ||
Свойство Name |
Имя (идентификатор) объекта |
|
Имя идентифицирует объект во время выполнения программы. Свойство нельзя изменить во время выполнения формы. При задании значения этого свойства применяются обычные правила создания имен: имя начинается с буквы, рекомендуется применять буквы латинского алфавита, строчные и прописные буквы считаются равными, запрещено использовать пробелы, запятые и другие специальные знаки и символы. | ||
Свойство Caption |
Подпись объекта |
Frame1.Caption = "Up_Down" |
Высвечивается в форме в режиме выполнения. | ||
Свойства Left, Top |
Определяют расположение объекта в форме или формы на экране |
CheckBox1.Left=20 CheckBox1.Top=50 |
Свойства задают координаты левого верхнего угла элемента управления относительно левого верхнего угла контейнера - элемента, в который вложен данный. Единица измерения - точка. Контейнером, как правило, является сама форма. | ||
Cвойства Height, Width |
Размеры объекта на экране |
Userform1.Height=200 Textbox1.Width=400 |
Устанавливают размер формы или элемента управления. Единица измерения - точка. | ||
Свойства BackColor, ForeColor, BorderColor |
Цвет фона объекта, цвет переднего плана объекта (цвет текста), цвет рамки (границы) объекта |
Userform1.BackColor = RGB(255, 0, 0) Userform1.BackColor = vbRed Userform1.ForeColor = vbWhite Userform1. BorderColor=vbBlack |
Определяют внешний вид объекта. Цвет можно выбрать визуально из таблицы цветов. можно задавать программно, используя функцию RGB или константы VBA, которые присваивают свойству целое число, соответствующее выбранному цвету. | ||
Свойство ControlTipText |
Короткая подсказка по элементу формы |
Frame1.ControlTipText = "Вперед или Назад" |
Определяет краткий текст, который появится на экране рядом с объектом, когда курсор мыши будет находиться на данном объекте. | ||
Свойство Font |
Шрифт |
watch.Font.Bold=True |
Шрифт определяет характеристику текста, высвечиваемого в элементе управления. Нажатие на кнопку при визуальном задании этого свойства вызывает стандартный диалог изменения типа, размера и начертания шрифта. При использовании в процедуре свойство Font возвращает объект Font, свойства которого можно установить программно – оператор, приведенный в примере, устанавливает полужирное начертание для объекта watch. | ||
Свойство TabIndex |
Индекс элемента |
CommandButton1.TabIndex=1 |
Определяет порядковый номер элемента управления в обходе всех элементов с помощью клавиши Tab. Нумерация элементов начинается с 0. Максимальное значение этого свойства равно количеству элементов управления минус единица. | ||
Свойство ControlSource |
Установка свойства Value элемента управления в значение, расположенное в указанной ячейке |
TextBox1.ControlSource="Лист1!A5" |
Cвязывает значением элемента управления с ячейкой рабочего листа. | ||
Свойство RowSource |
Установка значений элементов списка |
ListBox1.RowSource="MySheet!A15:C43" |
Cвязывает список с ячейками рабочего листа | ||
Свойство Enabled |
Доступность элемента во время выполнения формы |
CommandButton1.Enabled=False |
Определяет, может ли элемент управления оказаться в фокусе в результате действий пользователя:
Отключенный элемент затеняется. Оператор, приведенный в примере, не дает возможности пользователю нажать на командную кнопку CommandButton1. |