如何启用事件以调用Workbook_BeforeSave

时间:2014-10-10 09:51:13

标签: excel-vba vba excel

在保存

之前未调用我的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文件时,会显示以下错误消息:

enter image description here

英文翻译是"编译错误:程序外的错误指令。"

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

1 个答案:

答案 0 :(得分:4)

希望这些会有所帮助:

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

  2. Application.EnableEvents = True无法插入程序或功能之外。

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

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

  4. 您可以使用一个小子来更改和查看Application.EnableEvents状态(ON / OFF)。将sub放在任何标准模块下。见下图。

  5. enter image description here