我有以下代码连接到 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/