如何启用事件,以便调用Workbook_BeforeSave

Jab*_*cky 2 excel vba excel-vba

Workbook_BeforeSave保存前未调用我的活动

这是我的代码:

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   a = MsgBox("Do you really want to save the workbook?", vbYesNo)
   If a = vbNo Then Cancel = True
End Sub
Run Code Online (Sandbox Code Playgroud)

这可能是正常的,因为可能未启用事件。现在我试着Application.Events = True这样写:

Option Explicit
Application.Events = True

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   a = MsgBox("Do you really want to save the workbook?", vbYesNo)
   If a = vbNo Then Cancel = True
End Sub
Run Code Online (Sandbox Code Playgroud)

这不会改变任何内容,保存时仍不会调用Workbook_BeforeSave。但是,当我关闭excel文件时,显示以下错误消息:

在此处输入图片说明

英文翻译为“编译错误:过程外的错误指令”。

显然Application.Events = True不在正确的位置,但是我应该放在哪里?

ZAT*_*ZAT 6

希望这些对您有帮助:

  1. Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)必须ThisWorkbook在VBA项目中。

  2. Application.EnableEvents = True 不能在过程或函数外部插入。

  3. 默认情况下启用事件。因此,在vba项目中必须有某个地方事件被禁用。可以通过以下方式搜索:

    进入VBA项目后,按Ctrl + F打开“查找”对话框。然后在当前项目中搜索application.enableevents。按查找下一个。参见下图。

  4. 您可以使用一个小的子项来更改和查看Application.EnableEvents状态(开/关)。将接头放在任何标准模块下。参见下图。

在此处输入图片说明