|
Глава 2 Объект UserForm
2.1. Свойства и методы объекта UserForm
Свойства объекта UserForm
Рассматривая в п. 1.2 и 1.3 примеры, решаемые в редакторе VBA, можно прийти к выводу, что такие простейшие задачи с выводом единственного результата в диалоговое окно не всегда будут удовлетворять потребностям пользователей. Одним из достоинств языка программирования VBA является то, что он относится к объектно-ориентированным языкам. Следовательно, в данную среду программирования уже заложены возможности создания форм и его элементов простым использованием без составления громоздкого программного кода.
Практически во всех приложениях Office используются пользовательские диалоговые окна. Диалоговые окна в VBA называются формами (объект UserForms). Каждому объекту UserForm присущи определенные свойства, методы и события, которые он наследует от класса объектов UserForms. Диалоговые окна (формы) и элементы управления составляют основу современного визуального интерфейса. Все элементы управления и технология работы с ними в основном стандартизованы и похожи для разных платформ и программных сред. Эти объекты помещены в специальную библиотеку MSForms.
Выделим основные моменты, которые следует иметь в виду при создании визуального интерфейса.
• Все загруженные диалоговые окна представляют коллекцию UserForms со стандартными методами и свойствами. Элемент коллекции – объект класса UserForm – задает отдельное окно.
• Для каждого типа элементов управления в библиотеке msforms имеется класс объектов, имя которого совпадает с именем элемента управления (его типа). Например, есть классы SpinButton и TextBox.
• Диалоговые окна создаются, как правило, не программно, а визуально. Вначале создается само окно, а затем оно наполняется элементами управления при помощи соответствующей панели элементов. Этот этап называется этапом проектирования, и его следует отличать от этапа выполнения, когда приложение выполняется и конечный пользователь взаимодействует с приложением, в частности через диалоговые окна и их элементы управления. Как только создается диалоговое окно и помещается в него тот или иной элемент управления, в этот же самый момент автоматически в программе появляется объект соответствующего класса, с которым можно работать, вызывая его методы и изменяя его свойства.
На этапе проектирования, используя окно свойств, можно задать большинство свойств как самого диалогового окна, так и всех элементов управления, помещенных в него, кроме этого, программно необходимо прописать все обработчики событий.
• Последний момент – отладка. Для ведения отладки нужно предварительно откомпилировать приложение и затем перейти в режим выполнения приложения.
Для того чтобы в разрабатываемое приложение можно было добавить форму, необходимо выполнить следующие действия:
1) запустить редактор VBA;
2) выделить правой кнопкой мыши объект Project, выполнить команду Insert + UserForm (рис. 11), после чего появляются новая форма и панель элементов Toolbox (рис. 12).
Рис. 11. Добавление формы
Рис. 12. Новая форма
Форма как объект имеет некоторые встроенные свойства, и их можно устанавливать или программным образом, или в Properties Window (окне свойств) редактора VBA (табл. 6).
Таблица 6
Наиболее часто используемые свойства объектов UserForm
Свойство |
Описание |
ActiveControl |
Возвращает объектную ссылку на элемент управления, находящийся в фокусе в данный момент. Только для чтения |
BackColor |
Целое типа Long определяет цвет формы |
Caption |
Текст, выводимый в качестве заголовка формы |
Controls |
Возвращает коллекцию всех элементов управления формы |
Cycle |
Определяет, должно ли нажатие клавиши табуляции вызывать последовательный выбор всех элементов управления во всех группах и на каждой странице многостраничных элементов управления или только в пределах текущей группы или страницы. Может содержать одну из двух встроенных констант: fmCycleAIIForms или fmCycleCurrentForm |
Enabled |
Содержит значение типа Boolean, указывающее, доступна ли форма. Если его значение равно False, ни один из элементов управления формы не доступен |
Font |
Возвращает ссылку на объект Font, посредством которого можно выбрать параметр шрифта формы или элемента управления |
ForeColor |
То же самое, что и свойство BackColor, но устанавливает цвет, используемый для переднего плана (обычно это цвет текста) объекта формы |
Методы объекта UserForm
Всякий раз, создавая в проекте новый объект UserForm, одновременно создается новый подкласс объекта UserForm. Любые процедуры или функции, написанные в разделе General (общий) модуля класса, относящегося к форме, становятся дополнительными методами для отдельного подкласса объекта (табл. 7).
Таблица 7
Наиболее часто используемые методы для объектов UserForm
Метод |
Назначение |
Copy |
Копирует выделенный в элементе управления текст в буфер обмена Windows |
Cut |
Вырезает выделенный в элементе управления текст и помещает его в буфер обмена Windows |
Hide |
Скрывает UserForm, не выгружая её из памяти, сохраняя значения элементов управления формы и всех переменных, объявленных в модуле класса формы |
Paste |
Вставляет содержимое буфера обмена Windows в текущий элемент управления |
PrintForm |
Выводит на используемый в Windows по умолчанию принтер изображение формы, включая все данные, введенные в элементы управления |
Repaint |
Перерисовывает форму, выведенную на экран. Используется этот метод, если необходимо перерисовать форму, не ожидая, когда она будет перерисована через обычный период времени |
Show |
Выводит форму на экран. Если форма еще не загружена в память, то данный метод сначала её загружает. Синтаксис метода Show: FormName.Show |
События объекта UserForm
Событие – это что-то, что может произойти с диалоговым окном или элементом управления диалогового окна (табл. 8).
Событийные процедуры следует записывать в модуль класса, который является частью User Form. При этом такие процедуры должны иметь имена в виде
ObjectName_EventName,
где ObjectName – имя формы или элемента управления, a EventName – имя события, с которым идет работа. Такой формат имени позволяет VBA сопоставлять заданному событию требуемую процедуру.
Таблица 8
События объектов UserForm
Событие |
Синтаксис заголовка процедуры |
Описание |
Activate |
Private Sub object_Activate() |
Инициируется всякий раз, когда окно формы становится активным. Используйте это событие для обновления содержимого диалоговых элементов управления, чтобы отразить любые изменения, которые произошли, пока окно формы было неактивным |
Click |
Private Sub object_Click() |
Инициируется всякий раз, когда по форме (любой её части, не занятой элементами управления) щелкают мышью |
DblClick |
Private Sub object_DblClick() |
Инициируется всякий раз, когда по форме (любой её части, не занятой элементами управления) дважды щелкают мышью |
Deactivate |
Private Sub object_Deactivate() |
Инициируется всякий раз, когда форма перестает быть активной |
Initialize |
Private Sub object_Initialize() |
Инициируется всякий раз, когда форма впервые загружается в память посредством выполнения оператора Load или с помощью метода Show. Используйте это событие для иницииации элементов управления формы при её появлении на экране |
Resize |
Private Sub object_Resize() |
Инициируется при изменении размеров формы |
Terminate |
Private Sub object_Terminate() |
Инициируется всякий раз, когда форма выгружается из памяти. Используйте это событие для осуществления любых спеиальных служебный задач, которые необходимо выполнить прежде, чем переменные формы будут выгружены |
Элементы управления
Объект UserForm может содержать те же элементы управления, что и находящиеся в диалоговых окнах Word, Excel или других приложений Windows (табл. 9). Элементы управления – это элементы диалогового окна, позволяющие пользователю взаимодействовать с программой. Они включают в себя кнопки-переключатели, текстовые поля, линейки прокрутки, командные кнопки и т. д.
Таблица 9
Стандартные элементы управления, включенные в VBA
Элементы управления |
Назначение |
Label
(надпись, метка) |
Позволяет создавать заголовки элементов управления, которые не имеют собственных встроенных заголовков |
TextBox (текстовое поле) |
Окно редактируемого текста свободной формы для ввода данных. Может быть одно- или многострочным |
ComboBox (поле со списком) |
Этот элемент управления объединяет окно редактирования и окно списка. Используйте, когда хотите предложить пользователю выбрать значение, но при этом датьему возможность ввести данные, отсутствующие в списке |
ListBox (список) |
Отображает список значений, из которых пользователь может сделать выбор. Окна списка можно использовать,чтобы дать возможность пользователю выбрать только одно значение или же несколько |
CheckBox (флажок) |
Стандартный флажок (квадратноее окно, содержащее, если элемент выбран, галочку). Используйте флажки для выбора вариантов, которые не являются взаимо-исключающими |
OptionButton (переключатель) |
Стандартная кнопка-переключатель (круглое окно, при выборе в центре него находится чёрная точка). Используйте OptionButton, когда пользователю необходимо сделать выбор между положениями "включено"/"выключено" или "истина"/"ложь". Кнопки-переключатели, как правило, объединяются вместе при помощи рамки для создания группы переключателей |
ToggleButton (выключатель) |
Выключатели служат для той же цели, что и флажки, но выводят установки в виде кнопки, находящейся в "нажатом" или "отжатом" состоянии |
Frame (рамка) |
Визуально и логически объединяет некоторые элементы управления (особенно флажки, переключатели и выключатели) |
CommandButton (кнопка) |
Используйте кнопки для выполнения таких действий, как Cancel (Отмена), Save (Сохранить), OK и т.д. Когда пользователь щелкает по кнопке, выполняется VBA-процедура, закрепленая за данным элементом управления |
TabStrip (набор вкладок) |
Этот элемент управления состоит из области, в которую вы помещаете другие элементы управления (такие как текстовые поля, флажки и т.д.) и полосы кнопок табуляции. Используйте элемент управления TabStrip для создания диалоговых вкладок, отображающие одни и те же данные в различных категориях. |
MultiPage (набор страниц) |
Этот элемент управления состоит из нескольких страниц. Вы можете выбрать любую из них, щелкнув по соответствующей вкладке. Используйте элемент управления MultiPage для создания диалоговых окон с вкладками |
ScrollBar (полоса прокрутки) и SpinButton (счетчик) |
Элемент управления ScrollBar позволяет выбирать линейное значение аналогично тому, как это можно сделать при помощи счетчика. Элемент управления SpinButton является специальной разновидностью текстового поля. |
Image (рисунок) |
Элемент управления Image позволяет вывести на форме графическое изображение. Используйте Image для вывода графических изображений в любом из следующих форматов: *.bmp, *.cur, *.gif, *.ico, *.jpg или *.wmf |
Обращение к элементам управления происходит в основном через их свойства и с помощью процедур обработки событий, написанных для каждого элемента (табл. 10).
Таблица 10
Cвойства стандартных элементов управления
Свойство |
Где применяется |
Описание |
Accelerator |
CheckBox, Tab, CommandButton, Label, Page, OptionButton, ToggleButton |
Содержит символ, используемый в качестве быстрой клавиши вызова, элемента управления, при нажатии Alt+<клавиша быстрого вызова> происходит выбор элемента управления |
BackColor |
Все элементы |
Число, представляющее определенный цвет фона элемента управления |
Caption |
CheckBox, CommandButton, Label, Frame, OptionButton, ToggleButton, Page, Tab, UserForm |
Для надписи - текст отображаемый элементом управления. Для других элементов управления - надпись, которая появляется на кнопке или вкладке или рядом с рамкой, флажком или переключателем. |
Cancel |
CommandButton |
Задает кнопку отмены диалогового окна. При нажатии на эту кнопку или клавишу Esc, диалоговое окно изчезает. Только одна кнопка формы может иметь данное свойство |
ControlTipText |
Все элементы управления |
Устанавливает текст, который отображается в виде всплывающей подсказки (ControlTip, называемой так же ToolTip), когда указатель мыши помещается на элемент управления |
Default |
CommandButton |
Определяет заданную по умолчанию кнопку. Когда пользователь нажимает в процессе диалога клавишу Enter, эта кнопка ведет себя так, как если бы по ней щелкнули мышью |
Enabled |
Все элементы управления |
Хранит значение типа Boolean, определяющее, доступен или нет элемент управления. Если Enabled имеет значение False, то элемент управлеия продолжает отображаться в диалоговом окне, но не может быть выбран |
ForeColor |
Все элементы управления |
То же самое, что и BackColor, но устанавливает цвет для переднего плана элемента управления, как правило, символов текста |
List |
ComboBox |
Массив типа Variant (одно- или многомерный), представляет список, содержащийся в элементе управления |
Max |
ScrollBar, SpinButton |
Переменная типа Long, определяющая максимальное значение счетчика, или значение, при котором полоса прокрутки находится в самом верху (для вертикальной полосы) или справа (для горизонтальной) |
Min |
ScrollBar, SpinButton |
Переменная типа Long, определяющая минимальное значение счетчика, или значение, при котором полоса прокрутки находится в самом низу (для вертикальной полосы) или слева (для горизонтальной) |
Name |
Все элементы управления |
Содержит имя элемента управления. Вы можете устанавливать данное свойство, только с помощью Properties Window |
RowSource |
ComboBox |
Задает источник из которого ListBox берет список объекта. В Excel VBA RowSource обычно использует диапазон рабочего листа |
Selected |
ListBox |
Возвращает массив значений типа Boolean для списка, который допускает множественный выбор. Каждый элемент массива содержит по одному элементу, соответствующему каждому пункту списка. Если значение элемента в массиве Selected равно True, то соответствующий пункт списка выбран. |
TabIndex |
Все элементы управления |
Число, ууказывающее положение элемента управления в порядке табуляции (может иметь значение от 0 до значения, равного количеству элементов управления на форме) |
TabStop |
Все элементы управления |
Значение типа Boolean, указывающее, может ли элемент управления быть выбран клавишей Tab. Если значение TabStop равно False, вы тем не менее можете щелкнуть на элементе и таким образом его выбрать |
Value |
Все элементы управления |
Значение текущих установок элемента управлени: текст в текстовом поле, какие выбраны флажки и переключатели, индекс выбранного раздела списка или число, указывающее текущее положение полосы прокрутки или счетчика |
Visible |
Все элементы управления |
Значение типи Boolean, указывающее, является ли элемент управления видимым |
|