【ExcelVBA入門】処理の実行時間を高速化する方法を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで処理を高速化するために意識していることはありますか? VBAは気づいたら処理が遅くなっていることがよくあるため、高速化テクニックを知っておくと便利です。

そこで今回は、

  • 処理を高速化する方法
  • 処理時間を計測する方法
  • Excel関数を使うときの注意点

といった基礎的なことから、応用的な方法まで、徹底的に解説します!

VBAで処理高速化するテクニック

VBAで処理を高速化するテクニックについて、解説します!

画面更新をOFFにする

最初は、画面更新をOFFにする方法です。VBAで処理を書くときは、別シートからデータコピー、シート追加、シート削除、ソート実行など、画面が動く処理を使うケースがよくありますよね。

そのため、画面更新をOFFにして処理結果の画面だけを表示するようにすると、画面表示分の時間を短縮できるのでおすすめです。

処理の最初に「Application.ScreenUpdating = False」で画面更新を停止して、処理の最後に「Application.ScreenUpdating = True」をすることで、途中の画面更新をせずに高速で処理を動かすことができます。

詳しくは以下記事で解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】画面の更新を停止して処理を高速化する方法とは
更新日 : 2019年5月22日

自動計算を手動計算にする

Excelでセルに関数をたくさん使っている場合、セルに値を書き込むだけで処理に時間がかかってしまうことがあります。そのため、画面更新と同様に処理の最初で手動計算にするのがおすすめです!

xlCalculationManual」で手動計算、「xlCalculationAutomatic」で自動計算にすることができます。

また、処理の途中で関数で計算したセルの値を使いたい場合は、「Application.Calculate」で再計算すればOKです。無駄な計算が減るので、処理を高速化することができます。

CSV読み込みはQueryTablesメソッドを使う

ファイルを読み込む方法として有名なのが、Openメソッドを使った方法です。ただ、Openメソッドは使いやすと引き換えに処理がすこし遅いため、大規模なデータを取り込むときは、処理に時間がかかってしまいます。

そんな時におすすめなのが、QueryTablesメソッドです。以下で詳しく使い方について解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】QueryTablesメソッドで高速にファイルを読み込む方法
更新日 : 2019年5月23日

無駄なセル選択をやめる

セルのデータをコピー・ペーストする場合、次のように書いている人がいます。

サンプルコード:

「A1セルを選択 → セルをコピー → A2セルを選択 → コピーした値を貼り付け」の流れで書いているのですが、コピー処理は1行で書くことで、シンプルかつ高速に処理を動かすことができます。

改善後のサンプルコード:

この例では1度のみのコピーでしたが、ループ処理で何度もコピーするような処理を作っていた場合処理の速度が大きく変わってくるので、覚えておくのがおすすめです。

処理時間を計測する方法

ここまで、処理を高速化する方法について解説してきましたが、実際に速くなっているか確認したいですよね。そんな方向けに、処理速度を計測する方法を以下で解説しています。遅い処理を調べる方法についても解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】処理時間を計測するためのTimer関数の使い方とは
更新日 : 2019年5月3日

補足:Excelの関数を使うときは要注意

ExcelのセルでVlookup関数SumIf関数などの関数を使うとき、範囲の指定に列全体、行全体を設定していると処理が重たくなります。

手動計算に変更すれば処理実行時は速くなるかもしれませんが、処理の最後で再計算したときに時間がかかってしまうため、結果的に処理が遅くなる原因になりがちです。

そのため、処理が遅い時は「Excelの関数を改善できないか」考えてみるのも一つの手です。VBAだけでなくExcel全体で改善方法を探すことが重要なので、ぜひ意識してみてくださいね。

まとめ

今回は、VBAで処理を高速化する方法について解説しました。VBAを書いていると処理が遅くなってしまうケースはよくあります。

後から改善できるものはすればよいのですが、できることなら最初から速く動くコードを書きたいですよね。今回紹介した方法はどれもすぐ取り入れることができるので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説