正如标题所示,我在使用Excel的Workbook_BeforeClose事件处理程序时出现问题。我知道我正在使用正确的方法签名(如下所示),因为它已经在过去工作,并且我已经正确地将事件处理程序放在" ThisWorkbook" VBA编辑器的模块。但是,我注意到每当我在VBE中进行大量编码时(在其他模块中),都不会执行此方法。即使我在内部放置断点,在工作簿关闭之前也不会触发断点。再说一次,如果我一直在搞乱VBE中的其他模块,这种情况就会发生;如果我只是打开工作簿并立即关闭它,这个方法运行正常,断点被击中。保存或不保存工作簿似乎没有什么区别,并且Excel 2013和2016中出现此问题(尚未尝试在早期版本中打开工作簿)。这个问题真的开始阻碍我的工作流程,所以如果有人想到为什么我的Workbook_BeforeClose处理程序没有被调用,我会非常感谢你的帮助!
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'More code...
End Sub
答案 0 :(得分:0)
在Excel论坛上posting this question之后,我得到了解决方案:我正在编辑的其他一些模块包含优化代码。这包括在宏运行时禁用应用程序事件,然后在完成后重新打开它们。但是,在调试时,我显然会在宏完成之前暂停宏,因此应用程序事件永远不会被重新打开!
现在,我要做的就是在尝试关闭工作簿之前在立即窗口中执行“Application.EnableEvents = True”,并且我的事件处理程序运行正常!