VBA Speedup

VBA高速化検証:Withステートメント

 Withステートメントは、同じオブジェクトに連続して処理を行う時に使用します。Withステートメントを使用すると、処理速度が向上すると一般的に認識されています。
 では「どの程速度が向上するのか」と疑問を持ったため、セル値の取得・設定に焦点をあて、検証を行いました。尚、Excel2003と2007で検証を行っています。


Withステートメント

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


結果

 ・Excel2003と2007では、2003の方が高速であった
 ・1回の処理ではWithステートメントを使用しても、しなくてもほぼ同様の結果である
 ・Withステートメントを使用した処理回数が増えるほど速度面で差が生じる
 ・セル値の取得では、5回の処理で時間にして約倍の差が生じる
 ・セル値の設定は、セル値の取得の約5.6倍処理時間がかかる


結果から

 1回の処理では、Withステートメントをしようしなくても構いませんが、2回以上同じオブジェクトに対する処理を連続で行う場合は必須です。
 Withステートメントからはそれますが、セル値の設定には非常に時間がかかります。しかし、セルアドレスを繋げ、セルをまとめて指定したり、Variant型変数に値を代入しておき、最後にセルに値を代入するといった工夫で、時間の短縮ができます。セル値を設定する処理の際は、注意して下さい。

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

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


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

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

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


Excel Tips for Teachers

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