1. 程式人生 > >【VBA研究】Application.Calculation狀態影響VBA執行速度

【VBA研究】Application.Calculation狀態影響VBA執行速度

作者:iamlaosong

發現一個現象,當Application.Calculation為自動計算狀態時,如果工作表中存有公式,2003版似乎並不降低VBA的執行速度,但2007版則影響很大,速度降低的特別明顯,尤其是資料量大,又含有陣列公式或者大量使用vlookup、match之類的函式時,速度降低的令人難以忍受。為此,必須將Application.Calculation狀態改為人工模式,等執行結束再還原。另一個影響VBA速度的因素是螢幕重新整理,為提高速度,可以臨時關閉螢幕重新整理。即:

VBA通常在程式開始加兩句:
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
在結尾處再恢復:
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 

需要注意的是,2003版上述兩個計算狀態對應的名稱是:xlManual和xlAutomatic,這個變數名稱2007版也可以用。

此外,恢復成自動計算模式時,系統會將公式重新計算一遍,即使再恢復前儲存檔案,系統也會在儲存前自動計算一遍,除非你將“儲存工作簿時重新計算”選項關閉:

Application.CalculateBeforeSave = False