Application.EnableEvents有时会自动关闭

时间:2018-11-05 21:13:16

标签: excel vba

每隔一段时间,我会发现Application.EnableEvents属性以某种方式被设置为false,需要我在VBE的“即时”窗口中将其手动设置回true。我的奥秘在于,将其设置为false不会引发VBA错误。如果抛出了错误,我不会对此提出太多质疑。

你们中的任何人都可以帮我解决可能的原因吗?目前,我没有线索。

上下文信息:

  • 我无法重现错误
  • 我在代码中的任何地方都没有更改Application.EnableEvents
  • 我所有的代码都完全依赖于事件,我在工作表单元格中没有任何UDF调用
  • 据我所知,VBE每次都是打开的,因此在发生故障时我可能正在积极地开发。

谢谢

2 个答案:

答案 0 :(得分:2)

Application.EnableEvents上添加手表,确保它是全局的,因此将Procedure设置为(All Procedures)和Module (All Modules)。将监视类型更改为Break When Value Changes

确保您的代码已解锁。然后运行您的应用程序,当值更改时,代码应在每一行上停止。这样,您可以再次检查代码行为是否符合预期。

偶然地,您使用RAII设计模式来管理这些“应用程序”设置。 code here uses a RAII design pattern to manage the status bar本质上是RAII模式使用一个类,并使用析构函数来重置设置。

答案 1 :(得分:1)

此设置绝不能自行更改。我会检查您是否打开了另一个正在修改设置的工作簿。

要执行此操作,请打开VBA编辑器(Alt-F11),并通过查看左侧的项目资源管理器来查看打开了哪些工作簿。在每个项目中查看禁用事件的代码。

此外,当您在项目和任何其他打开的项目上进行搜索时,请确保在查找窗口中选择“当前项目”并在“ EnableEvents”上进行搜索。默认情况下未选择当前项目,因此您可能会丢失您在搜索中不知道的一些代码,例如工作簿启动事件。