暂时禁用VBA';s工作表_change()
我有一个VBA宏,我需要运行它来初始化原始数据的每月数据转储。这个很好用 此外,我还有一个暂时禁用VBA';s工作表_change(),vba,excel,Vba,Excel,我有一个VBA宏,我需要运行它来初始化原始数据的每月数据转储。这个很好用 此外,我还有一个私有子工作表\u Change()步骤,每次更改单元格的值时都会运行该步骤。这个很好用 我的问题是,当我的初始化宏进行许多更改时,它会不断触发私有子工作表\u Change()。有没有办法在初始化完成运行之前将其禁用?我添加一个全局值bAlreadyinChange,并将其设置为True,然后在工作表\u Change事件开始时,检查该值并退出子项(如果已经设置),因此 application.enable
私有子工作表\u Change()
步骤,每次更改单元格的值时都会运行该步骤。这个很好用
我的问题是,当我的初始化宏进行许多更改时,它会不断触发
私有子工作表\u Change()
。有没有办法在初始化完成运行之前将其禁用?我添加一个全局值bAlreadyinChange
,并将其设置为True
,然后在工作表\u Change
事件开始时,检查该值并退出子项(如果已经设置),因此
application.enableevents = false
Sub Worksheet_Change()
if bAlreadyinChange Then Exit Sub
bAlreadyinChange = True ' set this so any updates don't fire the event again
' do whatever here
bAlreadyinChange = False
End Sub
这意味着我可以使用change事件对工作表应用我喜欢的任何更新或调整,而无需递归触发事件。虽然我看不出你为什么不能使用
应用程序做同样的事情。EnableEvents
在Rosetta的帖子中我添加了一个全局值BalreadyChange
,并将其设置为True
,然后在工作表\u Change
事件开始时,检查该值并退出子项(如果已经设置),因此
Sub Worksheet_Change()
if bAlreadyinChange Then Exit Sub
bAlreadyinChange = True ' set this so any updates don't fire the event again
' do whatever here
bAlreadyinChange = False
End Sub
这意味着我可以使用change事件对工作表应用我喜欢的任何更新或调整,而无需递归触发事件。虽然我看不出有什么理由不能使用Rosetta的帖子中的
应用程序执行相同的操作。EnableEvents
,但您必须暂时禁用eventi
Application.EnableEvents=False
然后通过初始化宏end将其设置回True
为确保实际设置回位,最好在初始化宏本身中执行此设置,并使用错误处理程序,如下所示:
Sub InitializingMacro ()
On Error GoTo ErrHandler
Application.EnableEvents = False
'Your code here...
ErrHandler:
Application.EnableEvents = True
End Sub
你必须暂时停止使用
Application.EnableEvents=False
然后通过初始化宏end将其设置回True
为确保实际设置回位,最好在初始化宏本身中执行此设置,并使用错误处理程序,如下所示:
Sub InitializingMacro ()
On Error GoTo ErrHandler
Application.EnableEvents = False
'Your code here...
ErrHandler:
Application.EnableEvents = True
End Sub
这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-@gofr1。谢谢你的提示:)是的,这是一个非常糟糕的答案:在我看来,这个答案不需要更多的解释,事实上这是唯一可能的答案。这个问题本身并不能证明谷歌搜索是可行的。OP甚至没有提供代码或他可能已经完成的步骤……这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-@gofr1。谢谢你的提示:)是的,这是一个非常糟糕的答案:在我看来,这个答案不需要更多的解释,事实上这是唯一可能的答案。这个问题本身并不能证明谷歌搜索是可行的。OP甚至没有提供代码或他可能已经完成的步骤……这种方法是针对userforms的,在工作表中可以使用
application.enableevents=false
这种方法是针对userforms的,在工作表中可以使用application.enableevents=false