DocumentBeforeClose синтаксис - PullRequest
       20

DocumentBeforeClose синтаксис

1 голос
/ 01 января 2012

Я действительно не знаю синтаксис события DocumentBeforeClose.Следуя этой странице, я должен создать модуль класса с именем 'EventClassModule' (см. Также эту статью).Так я и сделал.Затем я скопировал этот фрагмент кода (из примера первой ссылки) в этот (класс) модуль:

Public WithEvents appWord as Word.Application 

Private Sub appWord_DocumentBeforeClose _ 
        (ByVal Doc As Document, _ 
        Cancel As Boolean) 

    Dim intResponse As Integer 

    intResponse = MsgBox("Do you really " _ 
        & "want to close the document?", _ 
        vbYesNo) 

    If intResponse = vbNo Then Cancel = True 
End Sub

И, наконец, я поместил его в обычный модуль и выполнил его:

Dim X As New EventClassModule 
Sub Register_Event_Handler() 
 Set X.App = Word.Application 
End Sub

Что означает «Х» в данном случае, и что я делаю неправильно?При закрытии документа событие не выполняется.

Ответы [ 2 ]

2 голосов
/ 02 января 2012

X - это экземпляр класса, который вы создали (EventClassModule)

Ваша проблема в том, что .App не является свойством EventClassModule. Изменить

Set X.App = Word.Application 

на имущество, которое вы определили в своем классе

Set X.appWord = Word.Application 
1 голос
/ 15 августа 2012

Я попробовал то же самое! На самом деле это работает для меня. У меня есть это в модуле класса с именем EventClassModule

Public WithEvents appWord As Word.Application

Private Sub appWord_DocumentBeforeClose _
        (ByVal Doc As Document, _
        Cancel As Boolean)

'Here is the code you want to do before it close
MsgBox "WORKING!"

End Sub

И в модуле (не модуле класса) у меня есть

Dim X As New EventClassModule

Sub AutoExec()

    'Call any other sub or function you want

    Call Register_Event_Handler

End Sub

Sub Register_Event_Handler()

    Set X.appWord = Word.Application

End Sub

AutoExec вызывается, как только документ загружен. Таким образом, он вызывает sub Register_Event_Handler для регистрации объекта X (который является объектом EventClassModule, созданным модулем класса). Так что X будет объявлено, что документ вот-вот закроется

надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...