excel - 是否可以在处理同一事件时自动禁用 Excel Worksheet_Change 事件?

标签 excel events vba

我有以下代码连接到 InputSheet 的 Worksheet_Change 事件:

Private Sub Worksheet_Change(ByVal Target As Range)
  ' First, make sure we're working with an InputRange cell
  ' ALL OTHER CELLS: Exit, no action
  Dim rngCells As Range
  Set rngCells = Intersect(Target, InputSheet.Range("InputRange"))
  If rngCells Is Nothing Then
       Exit Sub
  End If

  ' Do interesting stuff that updates InputSheet
End Sub

此代码仅设计用于处理单元格子集 (InputRange),但会更新此范围之外的其他单元格。每个更新(可能有数百个)都会触发 Worksheet_Change 事件。

有什么方法可以在执行期间禁用此功能,然后在最后重新启用吗?

例如。有些语言有函数调用来执行此操作,甚至在 VBA 中也可以通过暂停计时器来禁用计时器事件。

我可以添加一个简单的标志,这将避免 Intersect 调用。毫无疑问,这会带来很好的速度提升,但仍然会导致不必要的事件回调。

最佳答案

是的:

Application.EnableEvents = False

完成该过程后:

Application.EnableEvents = True

关于excel - 是否可以在处理同一事件时自动禁用 Excel Worksheet_Change 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32262477/

相关文章:

java - 使用 java jxl 在 excel 中创建和访问工作表

sql-server - VBA - SQL 查询字符串

jquery - 我可以防止模糊事件的发生吗?

arrays - 将二维数组发布到 Excel 工作表

excel - 将路径文件分配给VBA中的变量

sql-server - SSAS Cube 中的条件颜色格式

excel - Excel的VBA自动化在退出后在内存中留下一个进程

c# - WPF 创建一个控件列表,可以通过鼠标滚动但仍保持功能

javascript - 如何捕获 Bootstrap 导航栏下拉事件?

vba - 在循环中使用 From Web Query