- •Пользовательские формы
- •Режимы работы с формой
- •Режим конструктора
- •Элементы управления
- •Событийные процедуры
- •Объекты UserFormиControls
- •Режим выполнения
- •Разработка приложения
- •Пример 1
- •Конструирование основной формы
- •Свойства формы и элементов управления
- •Создание событийных процедур
- •Конструирование формы для выбора рабочего листа
- •Создание событийных процедур
- •Элемент ListBox
- •Событийная процедура инициализации формы
- •Завершение разработки приложения
- •Связь формы с рабочей книгой
- •Элемент TextBox
- •Элемент ListBox
- •Пример 2
- •Конструирование форм
- •Процедуры
Пользовательские формы
В настоящее время издано множество книг, которые подробно рассматривают визуальный и программный способы организации интерфейса пользователя. Только перечисление всех возможностей заняло бы массу времени. Мы рассмотрим только незначительную часть имеющихся возможностей, которая проиллюстрирует один из подходов к проблеме создания интерфейса.
Объекты Userform (формы) используются в VBA для организации интерфейса пользователя. Формы представляют собой диалоговые окна и могут содержать различные стандартные элементы управления, такие как кнопки, списки, переключатели и т.д. Форма, как и любой объект, обладает свойствами, методами и событиями. Например, каждая форма имеет очевидные свойства - название формы в титульной строке окна, наличие и цвет рамки, цвет фона формы.
Чтобы новую создать форму, выполните команду Userform из меню Insert. При этом в окне проекта добавляется, если она отсутствовала, папка Forms. Раскрыв ее, можно увидеть перечень всех форм, относящихся к проекту.
В папке Forms появится строка, соответствующая новому объекту Userform, с именем формы. Имя формы строится в соответствии со стандартом и состоит из ключевого слова UserForm и порядкового номера создаваемой формы.
Диалоговые окна пользователя, элементы диалоговых окон, событийные процедуры можно рассматривать как "кубики", из которых разработчик строит удобный для пользователя интерфейс. Все элементы просты и очевидны, сложность конструкции ограничена изобретательностью разработчика и запросами пользователя.
Режимы работы с формой
Работа с формой производится в двух режимах: режиме конструктора и режиме выполнения.
Режим конструктора
В режиме конструктора добавляются, модифицируются или удаляются элементы управления, редактируются процедуры процедурного листа формы.
Могут быть открыты одновременно несколько форм и каждая в отдельном окне. Команды меню Window позволяют по-разному расположить окна форм и листов с процедурами (см. рис.7.1). В единицу времени активна только одна форма. Ее окно расположено поверх окон остальных форм и титульная строка высвечено ярко.
Вновь создаваемая форма автоматически представляется в режиме конструктора, ранее созданная форма открывается в режиме конструктора двойным щелчком на строке с именем формы в папке Forms окна проекта.
Имя окна, в котором открывается форма в режиме конструктора, состоит из имени рабочей книги и имени формы, в скобках после которого указано название объекта – UserForm.
Рис. 7.1. Две открытые формы. Форма ActivateSheet активна.
Элементы управления
Обычно на формах размещают элементы управления, с помощью которых передаются и принимаются данные, высвечиваются сообщения и запросы, происходит переход от одной формы к другой, запускаются какие-то обрабатывающие процедуры. Элементы управления являются общими для всех офисных приложений.
Для размещения в диалоговом окне Userform объектов управления (Control) используется панель Toolbox (элементы управления; описание элементов см. ниже).
Рис.7.2. Панель элементов управления |
Перечень элементов управления
Кнопка |
Название |
Описание |
Select Objects (Выбор объектов) |
Выделяет или отменяет выделение объекта | |
Label (Надпись) |
Неизменный текст. В режиме выполнения формы в элементе отображается значение свойства Caption | |
TextBox (Текстовое поле) |
Элемент используется для ввода/вывода данных в режиме выполнения формы | |
ComboBox (Комбинированный список) |
Подобен элементу ListBox, но дополнительно содержит поле для ввода данных (другое название - поле со списком) | |
ListBox (Список) |
Элемент допускает просмотр и выбор значений из списка значений. Список может содержать значения из интервала ячеек рабочего листа, значения элементов массива или может быть подготовлен методами объекта Listbox | |
CheckBox (Флажок) |
Элемент принимает логические значения. В одном диалоге можно установить несколько флажков в группе | |
OptionButton (Переключатель) |
Элемент принимает логические значения. Включение одной кнопки выключает остальные кнопки группы | |
ToggleButton (Выключатель) |
Элемент принимает логические значения. Включение одной кнопки выключает остальные кнопки группы. Возможно размещение рисунка или текста на кнопке | |
Frame (Рамка) |
Используется для создания области, в которой обычно размещаются CheckBox, OptionButton, ToggleButton, представляющие набор альтернативных значений (группа элементов) | |
CommandButton (Командная кнопка) |
Нажатие на командную кнопку вызывает выполнение некоторых действий, например, печать формы, вызов другой формы | |
TabStrip (Полоса вкладок) |
Используется для вывода/ввода однотипной информации, относящейся к разным объектам | |
MultiPage (Набор страниц) |
Помогает отображать разнородные данные, относящихся к одному объекту, на разных страницах формы (подобно диалогам Windows) | |
ScrollBar (линейка прокрутки) |
Устанавливает вертикальную или горизонтальную линейку прокрутки в окне формы | |
SpinButton (счетчик) |
Кнопка используется в числовых полях для уменьшения или увеличения значения поля (подобно изменению значения отступа при форматировании абзацев). Другие названия – ворот, веретено. | |
Image (изображение) |
В элементе выводится неизменяемый рисунок (графическое изображение, не являющееся объектом OLE) | |
RefEdit (редактирование ссылки) |
Используется при необходимости свертывания диалога при выделении интервала ячеек в режиме выполнения формы (подобно свертыванию диалога при задании интервала суммирования для функции Sum) |
Свойства объекта Userform и любых элементов управления изменяются в окне свойств, которое высвечивается при выборе команды Properties меню View или после нажатия на пиктограмму . Свойства можно просматривать в алфавитном порядке или с группировкой по категориям.
Элементы управления обеспечивают интерфейс с пользователем. Элементы управления обладают свойствами и методами. Значения свойств элементов управления могут быть изменены или проанализированы. Установка свойств формы и ее элементов, может производиться визуально в окне свойств, но программным путем в событийных процедурах формы. Чаще всего установка свойств предусматривается в процедуре инициализации формы.
Методы формы и ее элементов управления могут вызываться в процедурах. Разработчик может создать событийные процедуры для элементов управления. Перечень свойств, методов и событий, ассоциированных с элементами управления, можно просмотреть через Object Browser (кнопка ).