我有一个VBA宏,我需要运行它来初始化我的原始数据的每月数据转储。这很好用。
此外,我有一个Private Sub Worksheet_Change()
步骤,每次更改单元格的值时都会运行。这很好。
我的问题是,当我的初始化宏做了很多更改时,它会一直触发Private Sub Worksheet_Change()
。有没有一种方法可以在初始化完成之前将其禁用?
答案 0 :(得分:2)
你必须暂时解除偶数
Application.EnableEvents = False
然后通过初始化宏结束
将其设置回True
为确保您实际将其设置回来,您最好在初始化宏本身内进行此设置并使用错误处理程序,如下所示:
Sub InitializingMacro ()
On Error GoTo ErrHandler
Application.EnableEvents = False
'Your code here...
ErrHandler:
Application.EnableEvents = True
End Sub
答案 1 :(得分:1)
application.enableevents = false
答案 2 :(得分:0)
我添加了一个全局值bAlreadyinChange
并将其设置为True
,然后在Worksheet_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的帖子中使用Application.EnableEvents
做同样的事情