ExcelVBA:プログラムの高速化 その3

今回はExcelVBAの高速化の第3弾です。
第3弾は「無駄なSelectをしない」です。
皆様、仕事でExcelの作業を自動化したい場合にマクロ記録で作成したコードをそのまま利用したり、必要な部分だけコピペして利用されている方もいらっしゃると思います。

マクロ記録でVBAコードを作成するとSelectやSelection、ActiveCellという単語が頻繁に出てくると思います。Selectはセルを選択する命令、Selectionは選択したセル、ActiveCellはアクティブなセルを表す記述です。

例えばセルA1に「VBA」という文字列を表示したい場合にマクロ記録を利用すると以下のように記述されます。

一度セルA1を選択(Select)してから、選択したセル(ActiveCell)に文字列を代入すると2回に分けて命令が実行されます。当然、「セルA1に文字列を代入する」と1回で命令した方が良いですよね。
下図のtest1プロシージャは一度セルを選択してから数値を代入、test2プロシージャは直接セルに数値を代入するサンプルです。

それぞれ何回か実行して計測すると以下のようになります。単位は秒です。

【test1】
1回目:7.3203125
2回目:7.62109375
3回目:7.61328125

【test2】
1回目:0.40625
2回目:0.3984375
3回目:0.3828125

圧倒的にtest2の方が早いのが確認できます。もちろんこれは実行するマシン環境などにも左右されますが、無駄なSelectは確実にプログラムが遅くなる原因になります。

ISAパソコンスクールでは業務で基本構文からスタートし、業務利用する際のポイントを正しく習得できるVBA講座を用意しております。
もっと効率よくコードを書けるようにと悩んでいる方はぜひカウンセリングにご参加ください。
下記URLより申し込みもできます。

https://www.isa-school.net/entry/counseling/

最新情報をチェックしよう!