エンジニアのエンジニアによるエンジニアのためのサイト
Toggle navigation
TOP
技術
書籍
資格
業務
イベント・セミナー
ニュース・お知らせ
検索
News
07/25 おすすめ情報に 『 【案件】Azure AD関連の認証設計/azureの基本設計 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。
無料会員登録
メールアドレス
パスワード
パスワードを忘れた場合
Login
Tweet
TOP
投稿内容
処理の高速化(ExcelVBA)
投稿者: Nakamaさん
投稿日:2021/09/14 15:19
更新日:
2
分類
技術
テクノロジー
その他
キャリア
運用・保守
投稿内容
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/
コメント
コメントする
戻る