Excel Application.EnableEvents有时会自动关闭

Excel Application.EnableEvents有时会自动关闭,excel,vba,Excel,Vba,每隔一段时间,我会发现应用程序.EnableEvents属性以某种方式设置为false,需要我在VBE的即时窗口中手动将其设置为true。对我来说,神秘的是,它被设置为false而没有抛出VBA错误。如果抛出一个错误,我就不会这么多质疑了 你们谁能帮我找出可能的原因吗?现在,我没有线索 上下文信息: 我无法重现这个错误 我的代码中没有任何地方可以更改应用程序。EnableEvents 我所有的代码都完全依赖于事件,我没有在工作表单元格中调用任何UDF 据我记忆所及,VBE每次都是开放的,所以在

每隔一段时间,我会发现
应用程序.EnableEvents
属性以某种方式设置为false,需要我在VBE的即时窗口中手动将其设置为true。对我来说,神秘的是,它被设置为false而没有抛出VBA错误。如果抛出一个错误,我就不会这么多质疑了

你们谁能帮我找出可能的原因吗?现在,我没有线索

上下文信息:

  • 我无法重现这个错误
  • 我的代码中没有任何地方可以更改
    应用程序。EnableEvents
  • 我所有的代码都完全依赖于事件,我没有在工作表单元格中调用任何UDF
  • 据我记忆所及,VBE每次都是开放的,所以在失败的时候我可能正在积极开发

谢谢,

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

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


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

应用程序上添加一个监视。启用事件
,确保它是全局的,以便将过程设置为
(所有过程)
和模块
(所有模块)
。值更改时,将手表类型更改为“断开”

确保您的代码已解锁。然后运行应用程序,当值更改时,代码应在每行停止。通过这种方式,您可以再次检查代码是否按预期运行


顺便说一句,您可以使用RAII设计模式来管理这些应用程序设置。本质上,RAII模式使用一个类,并利用析构函数重置设置。

上次它自己发生时,我只打开了一个工作簿,我搜索了它。从技术上说,我已经打开了个人工作簿,但是这本书并没有提到“代码> EnabyEvss/Cuth>。这是我们那些提供答案的人必须考虑的事情。在这种情况下,罪魁祸首很可能是一段失败且未重置EnableEvents的代码。