【ExcelVBA入門】画面の更新を停止して処理を高速化する方法とは

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

皆さんは、]VBAで処理を高速化する方法を知っていますか?VBAで処理が遅くなる原因として最も多いのが、「シート移動・並び替え・セル移動などの際に発生する画面更新」です。Application.ScreenUpdatingを使えば、簡単に画面更新を止めることができます。

そこで今回は、

  • 画面の更新を止めて処理を高速化する方法

といった基礎的なことから、

  • 画面更新を止めつつ処理の進捗を確認する方法
  • 更に処理を速くするために覚えておくと便利な小技

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

結論:画面更新を止めて高速化する方法とは

VBAで画面の処理を止める場合は、Application.ScreenUpdatingを使ってつぎのように書きます。

Flaseで画面更新停止、Trueで画面更新再開することができます。次のように処理の冒頭で画面更新を止めて、最後に再開することで画面更新せずにメインの処理を実行することができます。

サンプルコード:

画面更新をとめると無駄な表示がなくなるので、その分処理が高速化するわけですね。処理を速くするだけであれば、この方法だけ覚えておけばOKです。

問題点:処理がどのぐらい進んでいるのかわからない

ただ、先ほどの方法だと画面が完全に止まってしまうため、

  • 正しく処理が動いているのかわからない
  • どれぐらい処理に時間がかかるのかわからない

といった問題があり、初めて使う人は不安に思ってしまいます。そのため、処理の途中経過を表示する方法も覚えておくのがおすすめです!途中経過を表示するサンプルコードはコチラです。

サンプルコード:

実行結果:

※この例ではG2セルの文字色を事前に赤にしています

Callで実行したStepの処理の冒頭で、進捗状況をG2セルに書き込む処理を書いています。自分で使うツールを作るだけの場合は不要ですが、自分以外の人が使うツールを作る場合は進捗状況がわかるように作っておくのがおすすめです!

補足:合わせて覚えると便利な小技とは

ほとんどの場合画面更新を止めるだけで処理が速くなるのですが、稀に画面更新を止めても速くならないことがあります。画面更新を止めても処理が速くならない場合は、Excelの数式の自動計算が重たい可能性が高いです。

画面更新と同様に自動計算も1行で止めることができるので、合わせて覚えておくのがおすすめです。

自動計算を手動にする方法:

ただ、VBAの処理中に数式の入ったセルの値を使う場合は直前に再計算を入れる必要があるので、こちらも合わせて覚えておきましょう。

Excelの数式がありすぎて重たくなっている場合などに特におすすめなので、覚えておくと便利ですね。

まとめ

今回は、画面の更新を止めて処理を高速化する方法について解説しました。VBAは、処理を書いているうちに重たくなることがよくあります。

コードの書き方を直せば少しずつ速くできるかもしれませんが、長いコードを書いた後に直すのは正直大変ですよね。今回紹介した方法は、手っ取り早く処理を速くすることができるので覚えておくと便利です。ぜひ、使ってみてくださいね!

LINEで送る
Pocket

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

cta_under_bnr

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

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

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

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

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

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

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

おすすめコンテンツ

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

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