Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何启用事件以便调用工作簿\u BeforeSave_Excel_Vba - Fatal编程技术网

Excel 如何启用事件以便调用工作簿\u BeforeSave

Excel 如何启用事件以便调用工作簿\u BeforeSave,excel,vba,Excel,Vba,保存前未调用My工作簿\u 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 这可能是正常的,因为

保存前未调用My
工作簿\u 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
这不会改变任何事情,保存时仍不会调用工作簿\u BeforeSave。但当我关闭excel文件时,会显示以下错误消息:

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

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

希望这些可以帮助:

  • Private子工作簿\u保存前(ByVal SaveAsUI为布尔值,Cancel为布尔值)
    必须位于VBA项目中的
    thiswoolk

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

  • 默认情况下启用事件。所以,在vba项目中一定有某个地方事件被禁用。可通过以下方式进行搜索:

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

  • 您可以使用一个小的sub来更改和查看Application.EnableEvents状态(开/关)。将接头置于任何标准模块下。见下图


  • 选项explicit和
    工作簿\u BeforeSave
    子例程之间的代码未运行,因为它未被调用。我认为您必须添加一个额外的子项,手动运行该子项以启用事件。首先是
    Application.EnableEvents=True
    。第二,也是更重要的一点,您需要弄清楚事件被禁用的原因。;)@Goosebumbs:实际上问题是:如何自动启用事件。@Rory:感谢您指出它是
    Application.EnableEvents=True
    。似乎默认情况下禁用了事件。是否有自动启用事件的方法?默认情况下不能禁用事件-必须在代码中禁用它们。您确定已启用宏吗?如果是这样,那么一定有代码在某个地方禁用事件。