マクロの処理速度を早くする! 計算ストップと実行速度の計測
前回売上表に関数をいれたところ、マクロ実行がとても遅くなってしまいました。
原因は簡単で、マクロ実行中にも都度シート上で大量の計算が行なわれるからです。
そこで今回は、マクロ実行中の計算をストップさせて、それでどれだけマクロが早くなったのかを見ていきます。
まずは、実行速度を計測するコードを書いていきます。
tmp_time = Timer Debug.Print Timer - tmp_time
まずtmp_timeに現在の時間(実行前の時間)を入れていて、最後に現在の時間(実行後の時間)からtmp_timeを引きます。こうすることで、どれだけ時間がかかったかを計ることができます。
次に、シートの計算をストップするコードを入れていきます。
cal_mode = Application.Calculation Application.Calculation = xlCalculationManual
Application.Calculation = cal_mode
cal_modeに現在の計算モードを保存します。
現在の計算モードはApplication.Caluclationに保存されています。
そして、次に現在の計算モードを自動計算オフ(xlCalclationManual)にします。
最後にもとの計算モードに戻して終わりです。
それでは実際にマクロを実行してみます。
上が改良前、下が改良後です。
なんと10秒も早くなりました!
これでだいぶマクロが軽くなりました。
ついでにもうひとつのシートを削除するマクロも改良します。
1.6→0.4で大幅に早くなりました。
シートに関数を用いている場合は、計算をストップさせるとかなり早くなるので、おすすめですね。












