← コード一覧へ戻る
実務高速化

大量データの処理を速くする

画面更新と計算方法を一時的に変更し、終了時・エラー時のどちらも実行前の設定へ戻すひな型です。

実行前に確認

  • 高速化の程度は処理内容で変わります。手動計算中に数式の最新結果が必要なら対象範囲をCalculateしてください。
  • VBEのリセットボタンやEnd文で強制終了すると復元処理が動きません。設定はExcel全体に影響します。

1サンプルコード

Sub 高速化して処理する()
    Dim oldScreen As Boolean, oldCalc As XlCalculation
    Dim errorNumber As Long, errorText As String
    oldScreen = Application.ScreenUpdating
    oldCalc = Application.Calculation
    On Error GoTo Failed
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    'ここに処理を書く。例: ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = 1
CleanUp:
    On Error Resume Next
    Application.Calculation = oldCalc
    Application.ScreenUpdating = oldScreen
    On Error GoTo 0
    If errorNumber <> 0 Then MsgBox "エラー " & errorNumber & ": " & errorText
    Exit Sub
Failed:
    errorNumber = Err.Number
    errorText = Err.Description
    Resume CleanUp
End Sub

図で見る操作の流れ

イメージ図

概念図:処理前の設定を記憶してから、一時的に負荷を抑えます。

  1. マクロ:状態保存

    画面更新と計算方法の元の設定を覚える

  2. マクロ:一時変更

    画面更新を止め、計算を手動にする

  3. 処理を入れる場所

    現在はコメントのみ。必要な処理をここへ追加

  4. マクロ:復元

    正常終了・エラー時とも元の設定へ復元を試みる

現状のコードはA1へ書き込みません。強制終了では復元されず、設定はExcel全体へ影響します。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    「ここに処理を書く」の位置へ、動作確認済みのセル処理などを入れます。何も追加しなければ、設定を切り替えて元へ戻すだけです。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。

  4. 4

    追加した処理が終わると、計算方法と画面更新は実行前の設定へ戻ります。処理でエラーが出た場合も復元を試み、エラー内容を表示します。

使っている機能の公式ドキュメント(Microsoft Learn)