是否有一种方法可以在事件中启用VBA事件(如果它们已被禁用)

时间:2016-10-15 14:50:25

标签: excel vba events

我怀疑答案是明确的,因为它是一个循环论证

但是...

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

我可以在SheetChange事件中添加以下内容

如果Sh.name =" Sheet1"然后退出sub

这可以很好地加快导入过程,但当然没有任何事件会再次发生,因为我已经禁用了它们。因此,工作簿宏无法使用。

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

我可以添加一个必须按下的按钮,该按钮将通过模块子触发重新启用,但是期望用户必须这样做并不是特别直观。此外还有其他事件可能需要在用户按下之前触发,以便错过它们。

因此,我的愚蠢问题是 - 是否有其他方法可以重新启用事件?

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

感谢

1 个答案:

答案 0 :(得分:0)

一种方法是让进口商控制事件 只需要导入子:

  1. 禁用活动
  2. 导入以创建 Sheet1
  3. Sheet1 完成后重新启用事件。