VBA Speedup

VBA高速化検証:For~Nextステートメント[1]

 繰り返し処理時に使用するFor ~ Nextステートメントですが、「Nextの後に変数を記述した場合としない場合で差は生まれるのか」「For ~ NextとFor Each ~ Nextでは速度にどの程度の差があるのか」。
 この2点に疑問を持ったため、『For ~ Nextステートメント』について検証テストを行いました。尚、Excel2003と2007で検証を行っています。


Next後の変数の有無による速度比較

 下の表とグラフは、私のパソコン※でスピード検証テストを行った結果です。
 ※Vista / intel Core2 Duo / Excel2003,2007


結果

 ・Excel2003と2007では、ほぼ同様の結果であった
 ・For Each ~ Nextでは、変数を記述した方が若干速かった


For ~ NextとFor Each ~ Nextの速度比較

 下の表とグラフは、私のパソコン※でスピード検証テストを行った結果です。
 ※Vista / intel Core2 Duo / Excel2003,2007


結果

 ・Excel2003と2007では、2007が若干速かった
 ・For Each ~ Nextが33ポイント程高速であった


結果から

 Nextの後の変数の記述は、個人の好みだと思います。速度はほとんど変わらない結果だったので、記述派の方も気にする必要はありません。記述しないことを推奨する本もありましたが(速度の面ではありませんでしたが)、私は比較的記述することが多いです。

 また、配列やセル範囲での、For Each ~ Nextの使用は必須です。使用できる箇所に使用することが、高速化に繋がります。

※今回のテストは私のパソコンのみの検証であり、どのような環境でも、同様の結果を保証するもの
 ではありません。

※Excelのバージョンで結果に違いが出る事が考えられます。


検証テストコードとファイル

 検証テストのコード ・・・ [ Code ]

 検証テストを行ったファイルです。興味の有る方は試してみて下さい。
  ・Excel97-2010 ・・・[Test_File]

Excel Tips for Teachers

Copyright (C) 2009- 坂江 保 All Rights Reserved.