【问题标题】:Application.EnableEvents defaults to FalseApplication.EnableEvents 默认为 False
【发布时间】:2016-09-05 14:31:24
【问题描述】:

这发生在使用我在 2013 年设计的 Worksheet_Change 和 Worksheet_SelectionChange 事件的 Excel 2007/2010 用户身上。

似乎正在发生的是,当他们第一次打开工作簿时,他们的工作表事件不会触发。我已经确保他们的选项默认启用宏。如果我打开即时窗口并运行Application.EnableEvents = True,那么他们的事件就会开始正常触发。使用 Excel 2013 的用户似乎没有此问题,即使从共享网络驱动器打开完全相同的工作簿副本也是如此。

我似乎已经能够通过将Application.EnableEvents = True 放在 Workbook_Open 事件下来解决此问题,但我想知道这是一个可行的长期解决方案。我真的很想弄清楚为什么会发生这种情况并直接解决它。

【问题讨论】:

  • 这只是暗中的一击,在您的一个事件中,您使用的是On Error Resume NextGoto Something。并且代码不向后兼容 2007/2010。因此,当错误发生时,它会被忽略,并且该代码中的 Application.EnableEvents = True 将被跳过。删除代码中的所有错误处理程序,并在旧版本中打开这本书,看看会发生什么错误。
  • 由于 Workbook_Open 事件正在触发,似乎事件在开始时已启用。当某些事件导致问题时,可能某些不兼容导致它恢复为 False

标签: vba excel


【解决方案1】:

我今天在一些 Word VBA 上遇到了类似的问题。它位于一个隐藏的项目中。事实证明,我们错误地编码了其他人的 On Error 事件处理程序。我使用了 AutoExec 和 AutoOpen 宏并插入了一个 Stop 来进入调试模式,看看会发生什么。

除非您在代码中将 EnableEvents 设置为 False,否则应该触发这些事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多