Материал: Программирование на языке Visual Basic для приложений. Подвальный С.Л., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

действия пользователя приводят к определенной реакции приложения, если эти действия предусмотрены и не заблокированы. Если вы хотите, чтобы пользователи чувствовали себя комфортно при работе с вашими программами, начинайте создавать свои диалоговые окна с разработки событийных процедур.

Такие объекты, как формы и элементы управления приводят в действие, то есть делают доступными, некоторые события. Можно написать собственные VBA-процедуры, реагирующие на события. Такие процедуры, называются событий-

ными процедурами (event procedures) или процедурами обработки событий.

Событийные процедуры следует записывать в модуль класса, который является частью UserForm. При этом такие процедуры должны иметь имена в виде ObjectName_ EventName, где ObjectName - имя формы или элемента управления, a EventName - имя события, с которым вы хотите работать. Такой формат имени позволяет VBA сопоставлять заданному событию требуемую процедуру.

Большая часть программы, которую вы записываете в модуль класса формы, будет связана с обработкой событий. В табл. 8.3 перечислены события, для которых вы можете написать процедуры обработки.

 

 

 

Таблица 8.3

 

События объектов UserForm

 

 

Синтаксис заго-

 

 

Событие

ловка процедуры

Описание

 

обработки события

 

 

Activate

Private Sub object_

Инициируется

всякий раз,

 

Activate()

когда окно формы становит-

 

 

ся активным.

Используйте

 

 

событие для обновления со-

 

 

держимого диалоговых эле-

 

 

ментов управления, чтобы

 

 

отразить любые изменения,

128

Продолжение табл. 8.3

 

 

которые произошли,

пока

 

 

окно формы было неактив-

 

 

ным

 

 

 

 

 

Click

Private Sub

Инициируется

всякий

раз,

 

Оbject_Click (index

когда по форме (любой ее

 

As Long)

части, не занятой элемента-

 

 

ми

управления)

щелкают

 

 

мышью

 

 

 

 

DblClick

Private Sub object_

Инициируется

всякий

раз,

 

DblClick (index As

когда по форме (любой ее

 

Long, ByVal Cancel

части, не занятой элемента-

 

As MSForms. Re-

ми

управления)

дважды

 

turnBoolean)

щелкают мышью

 

 

Deactivate

Private Sub object_

Инициируется

всякий

раз,

 

Deactivate()

когда форма перестает быть

 

 

активной

 

 

 

 

Initialize

Private Sub ob-

Инициируется

всякий

раз,

 

ject_Initialize ()

когда форма впервые загру-

 

 

жается в память посредст-

 

 

вом

выполнения оператора

 

 

Load или с помощью метода

 

 

Show. Используйте это со-

 

 

бытие для

инициализации

 

 

элементов

управления фор-

 

 

мы при ее появлении на эк-

 

 

ране

 

 

 

 

 

Resize

Private Sub User-

Инициируется

при

измене-

 

Form_Resize ()

нии размеров формы

 

Terminate

Private Sub object_

Инициируется всякий раз,

 

Terminate ()

когда форма выгружается из

 

 

памяти. Используйте это со-

 

 

бытие для осуществления

 

 

любых специальных слу-

 

 

жебных задач, которые не-

129

Окончание табл. 8.3

обходимо выполнить прежде, чем переменные формы будут выгружены

В дополнение к методам, свойствам и событиям, встроенным в объект UserForm, VBA предоставляет два оператора, которые особенно полезны работе с объектами форм: Load и Unload, позволяющие загрузить форму в память или же удалить ее оттуда соответственно:

Load Object

Unload Object

Здесь Object представляет любую допустимую ссылку на объект UserForm.

Оператор Load загружает в память объект UserForm и запускает метод формы Initialize, но не выводит форму на экран. Когда форма загружена, можно использовать написанную на VBA программу для работы с объектом UserForm. Оператор Unload удаляет из памяти UserForm, а также все переменные формы. После того как форма выгружена, она перестает быть доступной для VBA-кода.

8.5. Элементы управления

Объект UserForm может содержать те же элементы управления, что и находящиеся в диалоговых окнах Word, Excel или других приложений Windows. Элементы управления (controls) - это элементы диалогового окна, которые дают возможность пользователю взаимодействовать с программой. Они включают в себя кнопки-переключатели, текстовые поля, линейки прокрутки, командные кнопки и так далее.

Многие производители программного обеспечения разрабатывают пакеты, расширяющие набор элементов управления. Вы можете добавлять элементы управления (известные как объекты ActiveX и Automation) к панели Toolbox (панели элементов), предварительно создавая ссылку из вашего проекта на библиотеку, содержащую расширенный набор элементов

130

управления. После этого можно добавлять данные элементы управления на панель Toolbox.

Каждый элемент управления - это объект с определенными свойствами, методами и событиями. Как и для формы, их содержащей, вы можете устанавливать свойства элементов управления программным путем или посредством Properties Window редактора VB. В программе вы можете присваивать или восстанавливать значения свойств элементов управления также как для любых других объектов.

В табл. 8.4 представлены стандартные элементы управления, включенные в VBA, а также назначение этих элементов.

Таблица 8.4 Стандартные элементы управления VBA

Элемент

Назначение элемента

 

управления

 

 

 

Label (надпись,

Позволяет создавать заголовки

элементов

метка)

управления, которые не имеют собственных

 

встроенных заголовков. Используйте этот

 

элемент для того, чтобы поместить на фор-

 

му статический текст, например, инструк-

 

ции, советы по заполнению других диало-

 

говых элементов управления

 

TextBox (тек-

Окно редактируемого текста

свободной

стовое поле)

формы для ввода данных. Может быть од-

 

ноили многострочным

 

СomboBox (по-

Этот элемент управления объединяет окно

ле со списком)

редактирования и окно списка. Используйте

 

его, когда хотите предложить пользователю

 

выбрать значение, но при этом дать ему

 

возможность ввести данные, отсутствую-

 

щие в списке. Вы можете также ограничить

 

выбор только теми значениями, которые

 

появляются в ComboBox для эмуляции нис-

 

падающего списка

 

131

 

Продолжение табл. 8.4

ListBox (список)

Отображает список значений, из которых

 

пользователь может сделать выбор. Окна

 

списка можно использовать, чтобы дать

 

возможность пользователю выбрать только

 

одно значение или же несколько

CheckBox (фла-

Стандартный флажок (квадратное окно, со-

жок)

держащее «галочку», если элемент выбран).

 

Используйте флажки для выбора вариантов,

 

которые не являются взаимоисключающи-

 

ми

OptionButton

Стандартная кнопка-переключатель (круг-

(переключатель)

лое окно, при выборе в центре него нахо-

 

дится черная точка). Используйте Option-

 

Button, когда пользователю необходимо

 

сделать выбор между «включено/выключе-

 

но», «истина/ложь». Кнопки-переключате-

 

ли, как правило, объединяются вместе при

 

помощи рамки для создания группы пере-

 

ключателей

ToggleButton

Выключатели служат для той же цели, что и

(выключатель)

флажки, но выводят установки в виде кноп-

 

ки находящейся в «нажатом» или «отжа-

 

том» состоянии

Frame (рамка)

Визуально и логически объединяет некото-

 

рые элементы управления (особенно флаж-

 

ки, переключатели и выключатели). Ис-

 

пользуйте Frame, чтобы показать пользова-

 

телю, какие элементы управления в диало-

 

говом окне связаны между собой, или что-

 

бы выделить группу элементов управления,

 

отделяя ее от остальных элементов управ-

 

ления, находящихся в диалоговом окне

CommandButton

Используйте кнопки для выполнения таких

(кнопка)

действий, как Cancel (Отмена), Save (Со-

 

хранить), ОК и так далее. Когда пользова-

132

Источник: https://studfile.net/preview/16565567/