События и событийные процедуры

 

Событие – это что-то, что может произойти с диалоговым окном или элементом управления диалогового окна. Типичные примеры событий: щелчок на кнопке, переключателе и т.д. Другие примеры событий: изменение содержимого окна редактирования или выбор элемента списка. Щелчок мышью, нажатие клавиши и действия, внутренние для вашего компьютера, – все они запускают или иными словами влекут за собой события.

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

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

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

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

 

Таблица 9.9. События объектов UserForm

Событие Синтаксис заголовка процедуры обработки события Описание
Activate Private Sub objecf_Activate() Инициируется всякий раз, когда окно формы становится активным. Это событие используется для обновления содержимого диалоговых элементов управления, чтобы отразить любые изменения, которые произошли, пока окно формы было неактивным
Click Private Sub object_Click(index As Long) Инициируется всякий раз, когда по форме (любой ее части, не занятой элементами управления) щелкают мышью
DblClic Private Sub object_DblClick(index As Long, ByVal Cancel As MSForms.ReturnBoolean) Инициируется всякий раз, когда по форме (любой ее части, не занятой элементами управления) дважды щелкают мышью
Deactivate Private Sub object_Deactivate() Инициируется всякий раз, когда форма перестает быть активной
Initialize Private Sub object_Initialize() Инициируется всякий раз, когда форма впервые загружается в память посредством выполнения оператора Load или с помощью метода Show. Это событие используется для инициализации элементов управления формы при ее появлении на экране.
Resize Private Sub UserForm_ Resize() Инициируется при изменении размеров формы
Terminate Private Sub object_Terminate() Инициируется всякий раз, когда форма выгружается из памяти. Событие используется для осуществления любых специальных служебных задач, которые необходимо выполнить прежде, чем переменные формы будут выгружены