Использование событий объекта Application

События. Обработчики событий.

События – некоторые зарегистрированные в системе состояния. Общие события определяются действиями пользователя с элементами управления. Для объектов встроенной объектной модели предлагаются события, с которыми можно ознакомиться в справочнике (смотрите описание выбранного объекта).

Обработчики событий – программы, вызываемые операционной системой. На каждое событие в системе задано некоторая стандартная обработка. Вы можете изменить, точнее, дополнить эти действия, составив свой обработчик события. Для некоторых объектов предоставляется возможность отказаться от стандартной обработки события, это часто реализуется при помощи присваивания параметру события Cancel значения False.

Имена всех процедур-обработчиков событий формируются по следующему правилу: сначала идет имя объекта, затем символ "подчеркивание", затем – имя события. В VBA пользовательская программа не отменяет стандартной обработки.

Писать руками заголовок обработчика события не надо: выберите в левом верхнем списке объектов объект (в окне кода), а затем в правом верхнем – событие, и VBA сам составит заголовок процедуры-обработчика.

Обработчик события можно вызвать как любую другую процедуру. В примере ниже показано, как по нажатию кнопки CommandButton1 вызывается собственный обработчик события, в котором вызывается обработчик события CommandButton2_Click.

Private Sub CommandButton1_Click()

MsgBox "11"

CommandButton2_Click

End Sub

 

Private Sub CommandButton2_Click()

MsgBox "22"

End Sub

В некоторых языках программирования поддерживается «подъем события» по иерархии объектов. Так в JavaScript происходит поднятие события по иерархии «это есть часть», в FoxPro – по иерархии наследования. В VBA такого нет.

В объектной модели MS Word слишком мало событий у объекта Document. Но возможности Вашего вмешательства можно существенно расширить, если воспользоваться событиями Word.Application. В примере 2 приведен текст, который можно приписать к объекту ThisDocument, и добиться того, что в выделяемых фрагментах программа будет изменять шрифт.

Пример:

Public WithEvents app As Word.Application

 

Private Sub begin_app()

set app = Word.Application

end sub

 

Private Sub app_WindowSelectionChange (ByVal Sel As Selection)

Sel.Font.Bold = True

End Sub

 

Private Sub end_app()

set app = Nothing

end sub

Написав первую строку в окне кода для ThisDocument, выберите, находясь в редакторе, в выпадающем списке объектов (наверху окна кода слева) объект app и посмотрите, какие у него есть события (наверху окна кода справа). В приведенном выше примере использовано событие «изменение выбранного фрагмента»: WindowSelectionChange.