在保存
之前未调用我的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
这可能是正常的,因为事件可能未启用。
现在我试着像这样放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
这并没有改变任何东西,Workbook_BeforeSave在保存时仍然没有被调用。但是当我关闭excel文件时,会显示以下错误消息:
英文翻译是"编译错误:程序外的错误指令。"
显然Application.Events = True
不在正确的位置,但我应该把它放在哪里?
答案 0 :(得分:4)
希望这些会有所帮助:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
必须位于VBA项目中的ThisWorkbook
内。
Application.EnableEvents = True
无法插入程序或功能之外。
默认情况下启用事件。因此,必须在vba项目内部某处事件被禁用。可以通过以下方式搜索:
进入VBA项目后,按Ctrl + F打开“查找”对话框。然后在当前项目中搜索application.enableevents。按查找下一个。见下图。
您可以使用一个小子来更改和查看Application.EnableEvents状态(ON / OFF)。将sub放在任何标准模块下。见下图。