【问题标题】:DocumentBeforeClose syntaxDocumentBeforeClose 语法
【发布时间】:2012-08-15 23:13:11
【问题描述】:

我真的不知道 DocumentBeforeClose 事件的语法。在this 页面之后,我应该创建一个名为“EventClassModule”的类模块(另见this 文章)。所以我做了。然后我将这段代码(来自第一个链接的示例)复制到那个(类)模块中:

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

在这种情况下,“X”是什么意思,我做错了什么?我现在关闭文档时没有执行任何事件。

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    X 是您创建的类的一个实例 (EventClassModule)

    您的问题是.App 不是EventClassModule 的属性。改变

    Set X.App = Word.Application 
    

    到您在类中定义的属性

    Set X.appWord = Word.Application 
    

    【讨论】:

      【解决方案2】:

      我尝试了同样的事情!实际上它对我有用。我在一个名为 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。所以它调用子Register_Event_Handler来注册对象X(这是一个对象EventClassModule,创建的类模块)。所以 X 会被告知文档即将关闭

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 2014-11-23
        • 2013-01-17
        相关资源
        最近更新 更多