機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA > VBA高速化テクニック

VBA高速化テクニック



ずいぶん昔にやったネタですが、未だに多くの方が参考にしてくださっているようです。動作の確認に使った環境も、さすがに時代を感じる古くささでしたし、文章も恥ずかしくて冷や汗が出てきます(^^;
そこで、思い切ってやり直します。Excelのバージョンもあがりましたし、もしかすると昔とは違った結果が出るかもしれません。

VBAでは、同じ処理を行うマクロでもいろいろな記述が許されていますが、記述の仕方で速度が大幅に改善されるケースも珍しくありません。そこで、具体的に「どう書いたらどの程度速くなるのか」を実際に検証して、その結果をレポートしてみます。マクロを作成するときの参考にしていただければ幸いです。

 Test1Test2%
1回目01:3000:1516.67%
2回目01:2900:1415.73%
 
10回目01:3000:1415.56%
平均01:3000:1416.09%
   
 1分30秒  
レポートは、左のような形式で結果を報告します。
それぞれの所要時間を、「分:秒」単位で記録します。
基本的に各テストを10回繰り返し、「平均(=AVERAGE(1回目:10回目)」を含めて表示します。
特に記載のない限り、高速化したコードが「Test2」です。「%」は単純に(Test1/Test2)という式で求めています。
どの処理にどれくらいの時間がかかったか…ではなく、コードの書き方によってどれくらい短縮したかを参考にしてください。
なお、今回テストに使用した環境は次の通りです。

CPU:AMD 1.0 GHz
メモリ:512MB
OS:Windows XP Home Edition
Excel:Excel 2002

ショップブランドですが、特別なマシンではありません。どこにでもある環境です。
また、IEのバージョンなどはVBAの動作速度に影響を与えないと思います。
ちなみに、この時点では6.0でした。



  1. 無駄な表示を止める
  2. 無駄なSelectをしない
  3. 余計なことはしない
  4. 何度も同じことをしない
  5. 個別に呼ばない
  6. 型を指定する
  7. 名前で呼ばない
  8. 標準のプロパティ
  9. 関数も使おう
  10. セルの指定方法
  11. セルを配列に入れる
  12. 文字列型関数を使う



このエントリーをはてなブックマークに追加