VBAを高速化する


マクロの実行速度が遅い。 そんな風に感じることはありませんか? そんな時は、マクロの高速化に挑戦してみましょう。


1,画面の更新を止める

機能.更新表示.C_スクリーン更新(有無 As 更新定数)

画面の更新とは、セルを選択したり、シートやウィンドウを切り替えたりといった、人の目に見えるような動作を言います。
これらの動作を頻繁にするようなマクロの場合、画面の更新を止めることで実行速度の高速化が期待できます。
処理を開始する前に画面更新を停止し、処理が終了したら忘れずに再開させましょう。


2,関数の計算を止める

機能.更新表示.C_自動計算(有無 As オンオフ定数)

SUMやVLOOKUPなどの関数は計算に使用するセルのデータが変わると、その時に再計算を行い、常に最新の計算結果が表示されるようになっています。
そのため何行にも渡って、複数のセル範囲を参照する〇〇IFS系関数に関係のあるセルにデータを入れていくようなマクロの場合、一つのセルにデータを入れる度にすべての関数が再計算されてしまいます。
こんな時は関数の自動計算機能を止めることで、再計算される時間を丸々カットすることができます。
しかしそのままではセルに値を入れても関数が入ったセルの値は古いままになってしまいますので、マクロでやりたい動作が終了したら必ず自動計算を再開させるようにしてください。
また、関数計算後の値をマクロで使用したい場合は自動計算を止めると結果が変わってしまいますので注意が必要です。


基本的には上記二つで対応できるのではないかと思います。
しかし「扱うデータの量がとても多い」「マクロの処理が複雑」で上記の手段では満足に早くならないという場合は【さらにVBAを高速化する】のページをご覧ください。