如果事件已经被禁用,是否可以在事件中启用VBA事件?

我怀疑这个答案是否定的,因为这是一个循环论证

但…

我将软件包中的报告直接导出到现有的Excel工作簿中。 该软件包在Excel中创build一个新工作表并填充工作表。 默认情况下,新工作表称为Sheet1。 这是一个大的报告,在Excel工作簿中有一个Workbook_SheetChange事件。 导出的报表的每个单元格都在Excel中单独更新,因此每个单元格都运行SheetChange事件。 这增加了10倍的import时间。

我可以添加到SheetChange事件,如下所示

如果Sh.name =“Sheet1”然后退出子

这加速了美丽的import过程,但是当然不会有事件再次发生,因为我禁用了它们。 所以工作簿macros是无法使用的。

我希望能够添加application.enableEvents = true当Sheet1工作表被取消激活,但当然这不会触发,因为事件已被禁用。

我可以添加一个必须按下的button,通过模块sub触发重新启用,但是用户不得不这么做。 还有其他一些事件可能需要在用户按下之前触发,以免丢失。

因此,我的愚蠢问题是 – 是否有另一种重新启用事件的方式?

我可以,我想,在每个工作表中都有一个Worksheet_Change事件,而不是全局的Workbook_SheetChange事件,但是在我这样做之前我想问一下。

谢谢

一种方法是让import商控制事件。
只需要inputsub:

  1. 禁用事件
  2. 导入以创buildSheet1
  3. 一旦Sheet1完成,重新启用事件。