Следующая статья: Программирование форм на VBA
Содержание
- Свойства и методы объекта UserForm
- Наиболее часто используемые свойства объектов UserForm
- Методы объекта UserForm
- События объекта UserForm
- Элементы управления
- Стандартные элементы управления, включенные в VBA
- Cвойства стандартных элементов управления
Свойства и методы объекта UserForm
Практически во всех приложениях Office используются пользовательские диалоговые окна. Диалоговые окна в VBA называются формами (объект UserForms). Каждому объекту UserForm присущи определенные свойства, методы и события, которые он наследует от класса объектов UserForms. Диалоговые окна (формы) и элементы управления составляют основу современного визуального интерфейса. Все элементы управления и технология работы с ними в основном стандартизованы и похожи для разных платформ и программных сред. Эти объекты помещены в специальную библиотеку MSForms.
Выделим основные моменты, которые следует иметь в виду при создании визуального интерфейса.
- Все загруженные диалоговые окна представляют коллекцию UserForms со стандартными методами и свойствами. Элемент коллекции – объект класса UserForm – задает отдельное окно.
- Для каждого типа элементов управления в библиотеке msforms имеется класс объектов, имя которого совпадает с именем элемента управления (его типа). Например, есть классы SpinButton и TextBox.
- Диалоговые окна создаются, как правило, не программно, а визуально. Вначале создается само окно, а затем оно наполняется элементами управления при помощи соответствующей панели элементов. Этот этап называется этапом проектирования, и его следует отличать от этапа выполнения, когда приложение выполняется и конечный пользователь взаимодействует с приложением, в частности через диалоговые окна и их элементы управления. Как только создается диалоговое окно и помещается в него тот или иной элемент управления, в этот же самый момент автоматически в программе появляется объект соответствующего класса, с которым можно работать, вызывая его методы и изменяя его свойства.
На этапе проектирования, используя окно свойств, можно задать большинство свойств как самого диалогового окна, так и всех элементов управления, помещенных в него, кроме этого, программно необходимо прописать все обработчики событий.
- Последний момент – отладка. Для ведения отладки нужно предварительно откомпилировать приложение и затем перейти в режим выполнения приложения.
Для того чтобы в разрабатываемое приложение можно было добавить форму, необходимо выполнить следующие действия:
- запустить редактор VBA;
- выделить правой кнопкой мыши объект Project, выполнить команду Insert + UserForm, после чего появляются новая форма и панель элементов Toolbox.
Добавление формы
Новая форма
Форма как объект имеет некоторые встроенные свойства, и их можно устанавливать или программным образом, или в Properties Window (окне свойств) редактора VBA (таблица. Наиболее часто используемые свойства объектов UserForm).
Наиболее часто используемые свойства объектов UserForm
| Свойство | Описание |
|---|---|
| ActiveControl | Возвращает объектную ссылку на элемент управления, находящийся в фокусе в данный момент. Только для чтения |
| BackColor | Целое типа Long определяет цвет фона формы |
| Caption | Текст, выводимый в качестве заголовка формы |
| Controls | Возвращает коллекцию всех элементов управления формы |
| Cycle | Определяет, должно ли нажатие клавиши табуляции вызывать последовательный выбор всех элементов управления во всех группах и на каждой странице многостраничных элементов управления или только в пределах текущей группы или страницы. Может содержать одну из двух встроенных констант: fmCycleAllForms или fmCycleCurrentForm |
| Enabled | Содержит значение типа Boolean, указывающее, доступна ли форма. Если его значение равно False, ни один из элементов управления формы не доступен |
| Font | Возвращает ссылку на объект Font, посредством которого можно выбрать параметры шрифта формы или элемента управления |
| ForeColor | То же самое, что и свойство BackColor, но устанавливает цвет, используемый для переднего плана (обычно это цвет текста) объекта формы |
Методы объекта UserForm
Всякий раз, создавая в проекте новый объект UserForm, одновременно создается новый подкласс объекта UserForm. Любые процедуры или функции, написанные в разделе General (общий) модуля класса, относящегося к форме, становятся дополнительными методами для отдельного подкласса объекта (таблица. Наиболее часто используемые методы для объектов UserForm).
Наиболее часто используемые методы для объектов UserForm
| Метод | Назначение |
|---|---|
| Copy | Копирует выделенный в элементе управления текст в буфер обмена Windows |
| Cut | Вырезает выделенный в элементе управления текст и помещает его в буфер обмена Windows |
| Hide | Скрывает UserForm, не выгружая ее из памяти, сохраняя значения элементов управления формы и всех переменных, объявленных в модуле класса формы |
| Paste | Вставляет содержимое буфера обмена Windows в текущий элемент управления |
| PrintForm | Выводит на используемый в Windows по умолчанию принтер изображение формы, включая все данные, введенные в элементы управления |
| Repaint | Перерисовывает форму, выведенную на экран. Используется этот метод, если необходимо перерисовать форму, не ожидая, когда она будет перерисована через обычный период времени |
| Show | Выводит форму на экран. Если форма еще не загружена в память, то данный метод сначала ее загружает. Синтаксис метода Show:FormName.Show |
События объекта UserForm
Событие - это что-то, что может произойти с диалоговым окном или элементом управления диалогового окна (таблица. События объектов UserForm).
Событийные процедуры следует записывать в модуль класса, который является частью User Form. При этом такие процедуры должны иметь имена в виде
ObjectName_EventName,
где ObjectName - имя формы или элемента управления, a EventName - имя события, с которым идет работа. Такой формат имени позволяет VBA сопоставлять заданному событию требуемую процедуру.
События объектов 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 (таблица. Стандартные элементы управления, включенные в VBA). Элементы управления - это элементы диалогового окна, позволяющие пользователю взаимодействовать с программой. Они включают в себя кнопки-переключатели, текстовые поля, линейки прокрутки, командные кнопки и так далее
Стандартные элементы управления, включенные в VBA
| Элемент управления | Назначение |
|---|---|
| Label (надпись, метка) | Позволяет создавать заголовки элементов управления, которые не имеют собственных встроенных заголовков |
| TextBox (текстовое поле) | Окно редактируемого текста свободной формы для ввода данных. Может быть одно- или многострочным |
| ComboBox (поле со списком) | Этот элемент управления объединяет окно редактирования и окно списка. Используйте, когда хотите предложить пользователю выбрать значение, но при этом дать ему возможность ввести данные, отсутствующие в списке |
| ListBox (список) | Отображает список значений, из которых пользователь может сделать выбор. Окна списка можно использовать, чтобы дать возможность пользователю выбрать только одно значение или же несколько |
| CheckBox (флажок) | Стандартный флажок (квадратное окно, содержащее, если элемент выбран, галочку). Используйте флажки для выбора вариантов, которые не являются взаимоисключающими |
| OptionButton (переключатель) | Стандартная кнопка-переключатель (круглое окно, при выборе в центре него находится черная точка). Используйте OptionButton, когда пользователю необходимо сделать выбор между положениями «включено/выключено» или «истина/ложь». Кнопки-переключатели, как правило, объединяются вместе при помощи рамки для создания группы переключателей |
| ToggleButton (выключатель) | Выключатели служат для той же цели, что и флажки, но выводят установки в виде кнопки, находящейся в «нажатом» или «отжатом» состоянии |
| Frame (рамка) | Визуально и логически объединяет некоторые элементы управления (особенно флажки, переключатели и выключатели) |
| CommandButton (кнопка) | Используйте кнопки для выполнения таких действий, как Cancel (Отмена), Save (Сохранить), ОК и так далее Когда пользователь щелкает по кнопке, выполняется VBA-процедура, закрепленная за данным элементом управления |
| TabStrip (набор вкладок) | Этот элемент управления состоит из области, в которую вы помещаете другие элементы управления (такие как текстовые поля, флажки и так далее) и полосы кнопок табуляции. Используйте элемент управления TabStrip для создания диалоговых вкладок, отображающих одни и те же данные в различных категориях |
| MultiPage (набор страниц) | Этот элемент управления состоит из нескольких страниц. Вы можете выбрать любую из них, щелкнув по соответствующей вкладке. Используйте элемент управления MultiPage для создания диалоговых окон с вкладками |
| ScrollBar (полоса прокрутки) и SpinButton (счетчик) | Элемент управления ScrollBar позволяет выбирать линейное значение аналогично тому, как это можно сделать при помощи счетчика. Элемент управления SpinButton является специальной разновидностью текстового поля |
| Image (рисунок) | Элемент управления Image позволяет вывести на форме графическое изображение. Используйте Image для вывода графических изображений в любом из следующих форматов: *.bmp, *.cur, *.gif, *.ico, *.jpg или *.wmf |
Обращение к элементам управления происходит в основном через их свойства и с помощью процедур обработки событий, написанных для каждого элемента (таблица. Cвойства стандартных элементов управления).
Cвойства стандартных элементов управления
| Свойство | Где применяется | Описание |
|---|---|---|
| Accelerator | CheckBox, Tab, CommandButton, Label, Page, OptionButton, ToggleButton | Содержит символ, используемый в качестве быстрой клавиши вызова, элемента управления, при нажатии Аlt + <клавиша быстрого вызова> происходит выбор элемента управления |
| BackColor | Все элементы | Число, представляющее определенный цвет фона элемента управления |
| Caption | CheckBox, CommandButton, Frame, Label, OptionButton, ToggleButton, Page, Tab, UserForm | Для надписи - текст, отображаемый элементом управления. Для других элементов управления - надпись, которая появляется на кнопке или вкладке или рядом с рамкой, флажком или переключателем |
| Cancel | CommandButton | Задает кнопку отмены диалогового окна. При нажатии на эту кнопку или клавишу Esc диалоговое окно исчезает. Только одна кнопка формы может иметь данное свойство |
| ControlTip-Text | Все элементы управления | Устанавливает текст, который отображается в виде всплывающей подсказки (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, указывающее, является ли элемент управления видимым |
Видео: «Музыка из звуков винды»
Из звуков винды можно создать довольно интересную музыку




