【发布时间】: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 Next或Goto Something。并且代码不向后兼容 2007/2010。因此,当错误发生时,它会被忽略,并且该代码中的Application.EnableEvents = True将被跳过。删除代码中的所有错误处理程序,并在旧版本中打开这本书,看看会发生什么错误。 -
由于 Workbook_Open 事件正在触发,似乎事件在开始时已启用。当某些事件导致问题时,可能某些不兼容导致它恢复为 False