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
  1. 高速化サンプル サブルーチン
    • このサブルーチンは、まず 高速化有効 サブルーチンを呼び出して高速化の設定を有効にし、その後に処理を実行するためのスペースを設けています。
    • 処理が終わった後に 高速化無効 サブルーチンを呼び出して、設定を元に戻します。

高速化有効サブルーチン

Private Sub 高速化有効()
    With Application
        .Calculation = xlCalculationManual ' 計算モードを手動に設定
        .EnableEvents = False ' イベントを無効にする
        .ScreenUpdating = False ' 画面更新を無効にする
    End With
End Sub
  1. Calculation = xlCalculationManual
    • 目的: Excelの自動計算機能を一時的に手動に切り替えます。
    • 効果: セルの値が変更されても再計算が行われないため、大量のデータを処理する場合の計算負荷を減らします。
  2. EnableEvents = False
    • 目的: Excelのイベント(例えば、ワークシートの変更イベントやワークブックのオープンイベント)を無効にします。
    • 効果: マクロの実行中に不要なイベントが発生しないため、イベント処理による遅延を防ぎます。
  3. ScreenUpdating = False
    • 目的: Excelの画面更新を無効にします。
    • 効果: マクロの実行中に画面が更新されないため、表示の変更による遅延を防ぎます。

高速化無効サブルーチン

Private Sub 高速化無効()
    With Application
        .Calculation = xlCalculationAutomatic  ' 計算モードを自動に設定
        .EnableEvents = True  ' イベントを有効にする
        .ScreenUpdating = True  ' 画面更新を有効にする
    End With
End Sub
  1. Calculation = xlCalculationAutomatic
    • 目的: Excelの計算モードを自動に戻します。
    • 効果: 変更されたセルの再計算が行われるようになり、シートの正しい値が反映されます。
  2. EnableEvents = True
    • 目的: Excelのイベントを有効に戻します。
    • 効果: ワークシートやワークブックのイベントが再びトリガーされるようになり、通常の操作に戻ります。
  3. ScreenUpdating = True
    • 目的: Excelの画面更新を有効に戻します。
    • 効果: マクロの実行中に行われた変更が画面に反映され、ユーザーが視覚的に確認できるようになります。

まとめ

このマクロの構造は、高速化のために一時的にExcelの設定を変更し、処理後に元の設定に戻すというものです。これにより、特に大量のデータを扱うマクロの実行速度が向上し、効率的に処理を行うことができます。処理内容を記入する部分に任意の処理を記述することで、その処理全体が高速化されます。

Follow me!