Excelの設定を一時的に変更することで、マクロの実行速度を向上
以下のマクロは、Excelでの処理を高速化するためのサンプルです。Excelの設定を一時的に変更することで、マクロの実行速度を向上させます。具体的には、計算モードの変更、イベントの無効化、画面更新の無効化を行います。それぞれの設定変更の目的と効果について詳しく解説します。
Sub 高速化サンプル()
Call 高速化有効
' 処理を記入
Call 高速化無効
End Sub
Private Sub 高速化有効()
With Application
.Calculation = xlCalculationManual ' 計算モードを手動に設定
.EnableEvents = False ' イベントを無効にする
.ScreenUpdating = False ' 画面更新を無効にする
End With
End Sub
Private Sub 高速化無効()
With Application
.Calculation = xlCalculationAutomatic ' 計算モードを自動に設定
.EnableEvents = True ' イベントを有効にする
.ScreenUpdating = True ' 画面更新を有効にする
End With
End Sub
高速化サンプルマクロ
Sub 高速化サンプル()
Call 高速化有効 ' 高速化設定を有効にする
' ここに処理を記入
Call 高速化無効 ' 高速化設定を無効にして元に戻す
End Sub
高速化サンプル
サブルーチン- このサブルーチンは、まず
高速化有効
サブルーチンを呼び出して高速化の設定を有効にし、その後に処理を実行するためのスペースを設けています。 - 処理が終わった後に
高速化無効
サブルーチンを呼び出して、設定を元に戻します。
- このサブルーチンは、まず
高速化有効サブルーチン
Private Sub 高速化有効()
With Application
.Calculation = xlCalculationManual ' 計算モードを手動に設定
.EnableEvents = False ' イベントを無効にする
.ScreenUpdating = False ' 画面更新を無効にする
End With
End Sub
Calculation = xlCalculationManual
- 目的: Excelの自動計算機能を一時的に手動に切り替えます。
- 効果: セルの値が変更されても再計算が行われないため、大量のデータを処理する場合の計算負荷を減らします。
EnableEvents = False
- 目的: Excelのイベント(例えば、ワークシートの変更イベントやワークブックのオープンイベント)を無効にします。
- 効果: マクロの実行中に不要なイベントが発生しないため、イベント処理による遅延を防ぎます。
ScreenUpdating = False
- 目的: Excelの画面更新を無効にします。
- 効果: マクロの実行中に画面が更新されないため、表示の変更による遅延を防ぎます。
高速化無効サブルーチン
Private Sub 高速化無効()
With Application
.Calculation = xlCalculationAutomatic ' 計算モードを自動に設定
.EnableEvents = True ' イベントを有効にする
.ScreenUpdating = True ' 画面更新を有効にする
End With
End Sub
Calculation = xlCalculationAutomatic
- 目的: Excelの計算モードを自動に戻します。
- 効果: 変更されたセルの再計算が行われるようになり、シートの正しい値が反映されます。
EnableEvents = True
- 目的: Excelのイベントを有効に戻します。
- 効果: ワークシートやワークブックのイベントが再びトリガーされるようになり、通常の操作に戻ります。
ScreenUpdating = True
- 目的: Excelの画面更新を有効に戻します。
- 効果: マクロの実行中に行われた変更が画面に反映され、ユーザーが視覚的に確認できるようになります。
まとめ
このマクロの構造は、高速化のために一時的にExcelの設定を変更し、処理後に元の設定に戻すというものです。これにより、特に大量のデータを扱うマクロの実行速度が向上し、効率的に処理を行うことができます。処理内容を記入する部分に任意の処理を記述することで、その処理全体が高速化されます。