每隔一段时间,我会发现Application.EnableEvents
属性以某种方式被设置为false,需要我在VBE的“即时”窗口中将其手动设置回true。我的奥秘在于,将其设置为false不会引发VBA错误。如果抛出了错误,我不会对此提出太多质疑。
你们中的任何人都可以帮我解决可能的原因吗?目前,我没有线索。
上下文信息:
Application.EnableEvents
谢谢
答案 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”上进行搜索。默认情况下未选择当前项目,因此您可能会丢失您在搜索中不知道的一些代码,例如工作簿启动事件。