Использование событий объекта 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.