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不在正确的位置,但是我应该放在哪里?
希望这些对您有帮助:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)必须ThisWorkbook在VBA项目中。
Application.EnableEvents = True 不能在过程或函数外部插入。
默认情况下启用事件。因此,在vba项目中必须有某个地方事件被禁用。可以通过以下方式搜索:
进入VBA项目后,按Ctrl + F打开“查找”对话框。然后在当前项目中搜索application.enableevents。按查找下一个。参见下图。
您可以使用一个小的子项来更改和查看Application.EnableEvents状态(开/关)。将接头放在任何标准模块下。参见下图。
