1. 程式人生 > 電腦技巧 >Excel VBA 加速程式執行速度技巧教學

Excel VBA 加速程式執行速度技巧教學

介紹各種加速 Excel VBA 程式執行效率的技巧,包含暫停更新畫面與狀態列、暫停事件處理、暫停公式自動計算。


Excel VBA 巨集程式對於處理少量的資料來說,是非常好用的自動化工具,但是如果資料量或計算量非常龐大時,頻繁存取 Excel 試算表的資料,會造成程式效能大幅降低,執行速度變得很慢。以下我們介紹一些常用來加速 Excel VBA 巨集程式的方法,大部分的情況下使用這些技巧多少都會對程式的執行效能有所幫助。

暫停更新畫面

當 VBA 巨集程式在控制 Excel 進行各種動作時(例如切換工作表等),使用者可以在螢幕上直接看到所有的操作,這樣雖然可以很方便看到 VBA 巨集程式目前執行的進度,但是要一邊執行程式一邊更新畫面,其實是會大幅拖慢執行速度的,這時候如果可以暫時停止更新畫面,等到所有的動作執行完,最後再更新的話,可以讓程式加速非常多。

若要讓某段 VBA 巨集程式在執行時,暫停畫面更新,可以再該程式碼的前後分別加上暫停與恢復畫面更新的設定:

' 暫停畫面更新

Application.ScreenUpdating = False

' 主要程式碼放在這裡

' 恢復畫面更新

Application.ScreenUpdating = True這樣一來再主要程式碼執行時,畫面就會暫時停止更新,而等到執行結束後,就會恢復正常,雖然看起來有點像當機的樣子,不過執行速度會快很多。

暫停更新狀態列

Excel 狀態列的更新也會多少拖慢執行速度,程式執行時可將其暫時關閉:

' 暫停狀態列更新

Application.DisplayStatusBar = False

' 主要程式碼放在這裡

' 恢復狀態列更新

Application.DisplayStatusBar = True

暫停事件處理

事件處理也是一種會拖慢執行速度的 Excel 功能,我們也可以用同樣的方式,暫時將其關閉:

' 暫停事件處理

Application.EnableEvents = False

' 主要程式碼放在這裡

' 恢復事件處理

Application.EnableEvents = True

暫停公式自動計算

Excel 在資料變動時會自動計算資料表中的公式,暫停這個功能也可以加入程式的執行,等待所有的計算完成後,再恢復自動計算功能:

' 暫停公式自動計算

Application.Calculation = xlCalculationManual

' 主要程式碼放在這裡

' 恢復公式自動計算

Application.Calculation = xlCalculationAutomatic

暫停四個容易拖慢的 Excel 功能

大部分的情況下,我們可以同時將以上四種會影響執行速度的 Excel 功能都暫停,讓程式以最有效率的方式執行:

' 暫停四個容易拖慢的 Excel 功能

Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False

Application.DisplayStatusBar = False

Application.EnableEvents = False

' 主要程式碼放在這裡

' 恢復四個容易拖慢的 Excel 功能

Application.Calculation = xlCalculationAutomatic

Application.ScreenUpdating = True

Application.DisplayStatusBar = True

Application.EnableEvents = True在撰寫 VBA 巨集程式時,就把這段程式碼直接貼在子程序(Sub)中,這樣就可以輕鬆提升程式的執行速度了。

加速 VBA 程式執行速度參考資料:StackOverflow