2015-11-06 69 views
1

我在Excel中編寫了一個VBA腳本,它反覆計算一系列物理變量,並在每次迭代時重新計算工作表中其他相關變量的值。爲什麼點擊即時窗口會加快VBA代碼的執行速度?

我已經從Visual Basic編輯器運行代碼,以便通過立即窗口監視每次迭代時一些變量的值。只需在即時窗口中點擊鼠標,或者按下Enter鍵,我就會驚奇地注意到執行的突然加速。相反,當VBA腳本從電子表格運行時,其執行速度大約慢了五倍,我發現無法加速它。

我不知道在點擊立即窗口時加速執行的原因是什麼,以及如何在沒有這個技巧的情況下加速代碼。

我使用Excel 2013和Windows 8.1。

+1

我們需要檢查您的代碼以回答您的問題。在您的代碼中,您可以使用Windows /參考其他工作簿/工作表,使用.Select或其他不必要的功能。 –

+0

加速VBA代碼的一些常用提示和技巧可以在以下地方找到:https://blogs.office.com/2009/03/12/excel-vba-performance-coding-best-practices/ – eirikdaude

回答

0
Application.ScreenUpdating = False 
Application.Calculation = xlManual 

在腳本的開頭和

Application.ScreenUpdating = True 
Application.Calculation = xlAutomatic 

在腳本的末尾可能可能產生相同的加速您通過聚焦到即時窗口獲取。

+0

謝謝。我已經嘗試過,不幸的是,這種改進很小。我仍然有更快的代碼,只需在運行時單擊即時窗口(這對我來說看起來是無法解釋的)。 – Ugo

+0

我也很困惑。我的下一個猜測將是一個Windows進程管理的bug。也許Windows將進程識別爲vba進程,並在VBA窗口關注時給予它更高的優先級,但在excel窗口關閉時則不會。手動設置流程優先級可能有助於測試該假設。 – andy01q

相關問題