在处理同一事件时,是否可以自动禁用Excel工作表更改事件?
我有以下代码连接到InputSheet的在处理同一事件时,是否可以自动禁用Excel工作表更改事件?,excel,events,vba,Excel,Events,Vba,我有以下代码连接到InputSheet的工作表\u 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, InputSh
工作表\u 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),但会更新此范围之外的其他单元格。每一次更新(可能有几百次)都会触发工作表\u Change
事件
有没有办法在执行过程中禁用此功能,然后在最后重新启用?
有些语言有函数调用来实现这一点,甚至在VBA中,也可以通过暂停计时器来禁用计时器事件
我可以添加一个简单的标志,这样可以避免Intersect
调用。毫无疑问,这将大大提高速度,但仍然会导致不必要的事件回调。是:
Application.EnableEvents = False
然后,当您完成该过程时:
Application.EnableEvents = True
这是一个快速的答复-看起来它的工作,谢谢!(除非我认为您前后都有EnableEvents true/false-我会解决它)