2016-06-28 71 views
-1

我有一個VBA宏,我需要運行初始化我原始數據的每月數據轉儲。這工作正常。暫時禁用VBA的工作表change_()

此外,我有一個Private Sub Worksheet_Change()步驟每次單元格的值更改時運行。這工作正常。

我的問題是,由於我的初始化宏進行了許多更改,它始終關閉Private Sub Worksheet_Change()。有沒有一種方法可以使它在初始化完成後才能禁用?

回答

2

必須暫時disabile EVENTI與

Application.EnableEvents = False

然後通過設置回True初始化的微距端

爲了確保你真正將其設置回你最好做你的初始化宏本身這裏面的設置和使用錯誤處理程序,就像如下:

Sub InitializingMacro() 

    On Error GoTo ErrHandler 
    Application.EnableEvents = False 

    'Your code here... 

ErrHandler: 
    Application.EnableEvents = True 

End Sub 
1
application.enableevents = false 
+1

這並沒有提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/12835362) – gofr1

+0

@ gofr1。謝謝你的注意:)是的這是一個非常糟糕的答案:D – Rosetta

+1

答案在我看來不需要更多的解釋,實際上它是唯一可能的答案。這個問題本身並沒有在手之前證明谷歌搜索。 OP甚至不提供代碼或他可能做了什麼步驟... –

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 

這意味着我可以使用更改事件將任何更新或調整應用於工作表,而不會遞歸地觸發事件。雖然我看不出有任何理由,你爲什麼不能這樣做使用Application.EnableEvents同樣的事情在羅塞塔的帖子

+1

這種方法是針對用戶表單的,在工作表中可以使用'application.enableevents = false' –