EXCEL VBA マクロ実行速度を上げる
マクロの実行速度を「描画処理の停止」および「EXCEL自動計算の停止」により高速化します。
デバッグ時などで異常終了した場合は、「強制復帰」の関数をイミディエイト画面で実行してください。
サンプル
mdl高速化.高速化開始 (True) mdl高速化.高速化終了
ソースコード(標準モジュール)
'オブジェクト名は「mdl高速化」にしてください。 ' ' モジュール⑦機能 : VBAの処理速度を上げます。 ' '内容 下記2つのEXCEL計算を止めて高速化します。 ' 処理により計算が必要な場合は、手動で更新してください。 ' Application.Calculation ' Application.ScreenUpdating ' ' ※デバッグ時などで異常終了した場合は、「強制復帰」をイミディエイト画面で実行すると治ります 'プロパティ ' - '関数 ' 高速化開始 開始時 ' 高速化終了 終了時 ' 'URL https://pgbigoroku.hatenablog.com/entry/2022/08/18/160110 '2022/8/17 Option Explicit Dim mCalculation As Integer Public Sub 高速化開始(Optional ByRef bln開始時確認 As Boolean = False) If bln開始時確認 = True Then Select Case MsgBox("マクロ実行速度を上げます。" & vbCrLf & "画面の更新処理および自動計算を一旦止めます。" & vbCrLf & "(異常時は「強制復帰」を実行してください。)", vbYesNoCancel) Case vbYes: '何も処理をしない。 Case vbNo: Exit Sub Case Else: Stop End Select End If mCalculation = Application.Calculation Application.Calculation = xlCalculationManual Application.ScreenUpdating = False End Sub Public Sub 高速化終了(Optional ByVal pbln自動計算 As Boolean = True) Application.ScreenUpdating = True If mCalculation = 0 Then If pbln自動計算 = True Then Application.Calculation = xlCalculationAutomatic End If Else If pbln自動計算 = True Then Application.Calculation = xlCalculationAutomatic Else Application.Calculation = mCalculation End If End If End Sub Public Sub 強制復帰() Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub