Excel VBA 処理の高速化 4選

スポンサーリンク
スポンサーリンク

処理の高速化

画面の更新を一時的に止める

「Excel」では、VBAを使ってセルの値を変更したり
何か操作をすると、手作業と同じように画面の表示が
更新されます。

この画面の更新は、Application(アプリッケーション)オブジェクトの
ScreenUpdating(スクリーンアップデーティング)プロパティで一時停止できます。

画面の更新を伴う処理の場合、画面更新を一時停止することにより
画面更新を行わなくて済む分、処理が高速になります。

画面更新を止めるコード

Application.ScreenUpdating = False


画面更新を再開するコード

Application.ScreenUpdating = True


繰り返し処理や複数のブックを開いて処理をするような
画面に更新が頻繁に行われる処理には必須ですね

処理の前に「画面更新を止めるコード」を記述して
処理が終わったら「画面更新を再開するコード」を記述します。

印刷設定の処理時間を短縮する

印刷の各種設定で操作するPageSetup(ページセットアップ)オブジェクトは
設定に時間のかかるオブジェクトですので、設定中は
Excelとプリンターとの通信を一時的に遮断します。

遮断した状態ではPageSetupオブジェクトの設定が高速で
行われるので、設定を終えてから通信を再開し
キャッシュされた設定をプリンターに送信します。

Application(アプリッケーション)オブジェクトの
PrintCommunication(プリントコミュニケーション)プロパティで通信遮断できます。
※このプロパティはExcel2010で追加されたプロパティです。

プリンターとの通信を遮断するコード

Application.PrintCommunication = False


プリンターとの通信を再開するコード

Application.PrintCommunication = True


pageSetupオブジェクトを設定する前に
通信を遮断して、設定が終わったら再開します。

イベントの発生を一時的に止める

セルの値を変更したり、ブックを開いたときなど
ユーザーの操作に応じてさまざまなイベントが発生します。

Applicationオブジェクトの
EnableEvents(イネーブルイベンツ)プロパティで
一時停止することができます。

イベントの発生を一時停止するコード

Application.EnableEvents = False


イベントの発生を再開するコード

Application.EnableEvents = True


イベントの発生する処理の前に一時停止のコードを記述し
イベントの発生する処理の後に再開のコードを記述することで
イベントに付随する処理を行わなくて済む分 処理が高速になります。
但し、処理できるイベントはWorkBookとWorksheetイベントのみで
UserFormやそのコントロールイベントは対象になりません

数式の再計算を一時的に止める

「Excel」の初期設定では、値の変更されたセルに
関連する数式が入力されている場合、その数式が自動的に再計算されます。

WorksheetオブジェクトのEnableCalculation(イネーブルカリュキレーション)プロパティで
再計算を一時停止できます。

数式の再計算を一時的に止めるコード

ActiveSheet.EnableCalculation = False


数式の再計算を再開するコード

ActiveSheet.EnableCalculation = True


以上で VBA処理の高速化 4選の解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク