Categories: Excel

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

Share
Published by
Office Guide
Tags: VBA

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago