win*_*aed 3 excel events vba excel-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
Run Code Online (Sandbox Code Playgroud)
此代码仅用于处理单元格子集(InputRange),但更新此范围之外的其他单元格.每个更新(可能有几百个)都会触发Worksheet_Change事件.
有没有办法在执行期间禁用它,然后在最后重新启用?
例如.某些语言有函数调用来执行此操作,或者甚至在VBA中,可以通过暂停计时器来禁用计时器事件.
我可以添加一个简单的标志,这将避免Intersect通话.毫无疑问,这会提高速度,但仍会导致不必要的事件回调.
是:
Application.EnableEvents = False
Run Code Online (Sandbox Code Playgroud)
然后,当您完成该过程时:
Application.EnableEvents = True
Run Code Online (Sandbox Code Playgroud)