excel - Application.EnableEvents 有时会自动关闭
问题描述
每隔一段时间,我会发现该Application.EnableEvents
属性以某种方式设置为 false,需要我在 VBE 的即时窗口中手动将其设置回 true。对我来说神秘的是它被设置为 false 而不会引发 VBA 错误。如果抛出一个错误,我就不会质疑它。
你们中的任何人都可以帮助我解决可能的原因吗?目前,我没有线索。
上下文信息:
- 我无法重现错误
- 我的代码中没有任何地方在改变
Application.EnableEvents
- 我的所有代码都完全依赖于事件,我没有在工作表单元格中调用的任何 UDF
- 据我记得,VBE 每次都是开放的,所以我可能在失败时正在积极开发。
谢谢,
解决方案
添加一个监视Application.EnableEvents
,确保它是全局的,因此将 Procedure 设置为(All Procedures)
和 Module (All Modules)
。将手表类型更改为Break When Value Changes
确保您的代码已解锁。然后运行您的应用程序,当值更改时,代码应该在每一行停止。这样,您可以仔细检查您的代码是否符合预期。
顺便说一句,您可以使用 RAII 设计模式来管理这些应用程序设置。这里的代码使用 RAII 设计模式来管理状态栏 本质上,RAII 模式使用一个类并利用析构函数来重置设置。
推荐阅读
- selenium - TestNg custom-emailable-report 不是每次都更新
- python - 如何在 Flask 中进行非永久会话
- node.js - 加载资源失败:服务器在nodejs中响应状态为500(内部服务器错误)
- python - 如何在类外使用方法对象(在类中)?
- javascript - 将 CST 时间转换为本地浏览器时间
- objective-c - 推断为具有类型“()”的常量,这可能是意外的 - 在 Swift 中替换 dispatch_once
- ionic-framework - 在同一设备上运行两个 ionic 3 应用程序
- c# - 调用 DataContext.SaveChanges() 时,C# MVC 实体框架、子 ID、孙 ID 不必要地递增
- php - 如何将 mysql_num_rows 等函数更改为 mysqli?
- docker - Docker容器无法挂载文件夹