Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在处理同一事件时,是否可以自动禁用Excel工作表更改事件?_Excel_Events_Vba - Fatal编程技术网

在处理同一事件时,是否可以自动禁用Excel工作表更改事件?

在处理同一事件时,是否可以自动禁用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

我有以下代码连接到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, 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-我会解决它)