並感謝您閱讀我的文章。我在Excel(Windows 7 Ultimate,Excel 2010)中遇到了Worksheet_Calculate事件的一個奇怪(在我看來)行爲 ,讓我通過給你一個設置來描述我遇到的問題。Excel中的Worksheet_Calculate事件的行爲 - 存儲的事件?
帶2張工作簿。片2細胞A1具有式= Sheet 1中!A1,Sheet 2中的EnableCalculation屬性被設置爲TRUE,並且Sheet 2中的對象有一個Sub
Private Sub Worksheet_Calculate()
i = MsgBox("Value " & Me.Range("A1").Value, vbOKOnly)
End Sub
在模塊1有一個SUB
Public Sub mySub()
Application.EnableEvents = False
ThisWorkbook.Worksheets(2).EnableCalculation = True
ThisWorkbook.Worksheets(2).EnableCalculation = False
Application.EnableEvents = True
End Sub
現在,在Sheet1單元格A1中輸入1 - 顯示「值爲1」的消息框。接下來,將Sheet2的EnableCalculation屬性設置爲FALSE,並在Sheet1單元格A1中輸入2 - 沒有任何反應。現在,運行模塊1中的mySub-Sheet2上的單元格A1顯示2,並將Sheet2的EnableCalculation屬性設置爲FALSE。到現在爲止還挺好。現在在Sheet1 Cell A1中輸入3 - 顯示「Value 2」的消息框!
似乎在執行mySub期間,計算事件被觸發(即使Application.EnableEvents設置爲FALSE),並且存儲了2的值(其中?),然後在輸入3時釋放了此事件放到Sheet1上的單元格A1中(儘管Sheet2的EnableCalculation設置爲FALSE)。任何線索發生了什麼,以及如何「修復」這種奇怪的行爲?
非常感謝。
謝謝您的閱讀和回覆我的帖子。但是,您的建議並未解決問題 - 它會阻止_Calculate事件觸發,但它也會阻止在執行mySub期間重新計算Sheet(2)。 mySub的要點是在不觸發_Calculate事件的情況下重新計算Sheet(2)。我也在MrEXcel.com論壇上發佈了這個問題(http://www.mrexcel.com/forum/showthread.php?p=2712303#post2712303),是否有人建議它可能是MS錯誤。似乎還有另一個Worksheet_Calculate的「奇怪」行爲,我在同一篇文章中描述過。 – Confounded 2011-05-13 15:00:48