VBA高速化検証:For~Nextステートメント[1] 2011.09.21
繰り返し処理時に使用する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ポイント程高速であった
結果から
For~Nextの後の変数の記述は、ほとんど変わらない結果だったので、個人の好みでよいと思います。記述しないことを推奨する本もありましたが(速度の面ではなく)、記述派の方も気にする必要はありません。私は以前記述していましたが、現在は記述していません。
また、配列やセル範囲でFor Each ~ Nextを使用できる場面であれば、高速化のためには必須です。
※今回のテストは私のパソコンのみの検証であり、どのような環境でも、同様の結果を保証するものではありません。
※Excelのバージョンで結果に違いが出る事が考えられます。
検証テストコードとファイル
●検証テストのコード [Code]
●Excel97-2010 [Test_File] 検証テストを行ったファイルです。