MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


処理の高速化(ExcelVBA)
profile-img
投稿者: Nakamaさん
投稿日:2021/09/14 15:19
更新日:
like-img
分類
技術
テクノロジー
その他
キャリア
運用・保守
投稿内容
ExcelVBAでのマクロ処理の高速化について、ご紹介していきます。

マクロ処理が組み込まれたExcelツールにおいて、データ量が多くなるとCPUに高負荷がかかり、処理に時間がかかってしまい、他作業に悪影響を及ぼすことがあります。
そうしたことを防ぐために、3つのポイントである程度処理を高速化させることができるので便利です。

1.セルやシートの見た目の変更を一時停止させる
 セル上に値が入力された場合などセルに何か変更を加えた際に、Excel上では、都度画面更新が行われています。都度更新されるため、データ量が多くなるとかなりの時間がかかります。
 その画面更新を一時停止させ、マクロ処理完了後にまとめて画面更新をさせることで高速化につながります。

[方法]
 以下のメソッドを使用すると画面更新が一時停止されます。
  Application.ScreenUpdating = False

 ※画面更新を止める場合は、処理完了後に以下のメソッドを記載する必要があります。
  Application.ScreenUpdating = True

2.ワークシート関数の自動計算を一時停止させる
 ツールによっては、マクロ処理結果をワークシート関数でデータ加工しているものもあります。この場合もマクロ実行中に値が入力される都度、自動計算が行われます。
 その自動計算を一時停止(手動化)させ、処理完了後にまとめて自動計算を再開させることで高速化につながります。

[方法]
 以下のメソッドを使用すると自動計算が一時停止(手動化)されます。
  Application.Calculation = xlCalculationManual

 ※自動計算に戻す場合は、処理完了後に以下のメソッドを記載する必要があります。
  Application.Calculation = xlCalculationAutomatic

3.イベントの一時停止
 別ブックを開いたり、別シートを開いたりなどのタイミングで指定されたオブジェクトに対して、イベント発生しています。VBAでは、そのようなイベントが多々あるので、イベント発生の抑制を行うことで高速化につながります。

[方法]
 以下のメソッドを使用すると自動計算が一時停止(手動化)されます。
  Application.EnableEvents= False

 ※自動計算に戻す場合は、処理完了後に以下のメソッドを記載する必要があります。
  Application.EnableEvents= True


以上、マクロ処理の高速化でした。
ご参考いただけると幸いです。

■参考資料
https://tonari-it.com/vba-processing-speed/
コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3