Excel VBA

【Excel VBA】【マクロ】【Tips】速度を上げるために最初と最後に入れたほうがよい処理

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回は処理速度についてのTips回です!!!

速度を上げるために最初と最後に入れたほうがよい処理

処理の最初と最後に入れておくべきコードをご紹介します。

●処理の開始時に呼び出すコード

Sub StartProcess()
    With Application
        .ScreenUpdating = False                 '描画を停止
        .Calculation = xlCalculationManual      '計算を手動
        .EnableEvents = False                   'イベント抑止
    End With
End Sub
 

●処理の終了時に呼び出すコード

Sub EndProcess()
    With Application
        .ScreenUpdating = True                  '描画を開始
        .Calculation = xlCalculationAutomatic   '計算を自動
        .EnableEvents = True                    'イベント開始
    End With
End Sub
 

コードの説明

各プロパティについてご説明します。
■Application.ScreenUpdating
画面表示の更新を制御します。
Falseを入れると描画をオフにし、Trueを入れると描画がオンになります。
描画をオフにすることで描画にかかる時間がなくなり、処理速度が上がります。
■Application.Calculation
計算方法を設定します。
xlCalculationManualを入れると手動計算、xlCalculationAutomaticをいれると自動計算となります。
手動計算にすることで計算がされないため、処理速度が上がります。
■Application.EnableEvents
イベントの発生を制御します。
Falseを入れるとイベント発生をオフにし、Trueを入れるとオンになります。
Worksheet_Changeを使用している場合、マクロでセルが変更されるたびに呼び出されてしまいます。
イベント発生をオフにすることで処理速度が上がります。

さいごに

2つのコードが書けたら以下のように、メイン処理の前後で呼び出してあげましょう!

Sub Main()
  Call StartProcess

  ’メイン処理
   ・・・

  Call EndProcess
End Sub
 

描画をオフにするとマクロの処理過程は見られなくなるためデバッグがしづらくなります。
なので最初は開始処理をコメントアウトしておき、マクロが完成したら動作するようにするようにしましょう!

Lenoco

COMMENT

メールアドレスが公開されることはありません。