【VBA研究】Application.Calculation狀態影響VBA執行速度
阿新 • • 發佈:2019-02-15
作者: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