例えば、Sheet1のA1からA3セルを、Sheet2のA1からA3にコピー&ペーストをするコードを考えてみましょう。
マクロ記録を使うと、このようなコードが生成されますよね。このコードを見て、酷い!と思う人も多いでしょう。実行時に画面がいちいち切り替わり、実行速度も遅いです。
しかし、目的通り正確に動きます。だから、その観点では「正しい」のです。自分だけが使う、1回こっきりのマクロなら、全くこれで良いのです。
では、コピー&ペーストをする範囲を、A1からA10セルに拡張したいといった要望が出てきた場合はどうしますか?
・・・絶望的に面倒ですよね。
つまり、その場合は「正しくない」コードなのです。
その修正の可能性を想定して、このようなコードを作りました。
だいぶコードの行数も減りましたし、ざっと眺めれば、どういう処理なのかも予想できますね。さらに、Sheet1のデータの行数がいくら増えたとしても、そのままのコードで対応が可能です。
良さそうですよね。
ですが、経験のある人であれば、次のようなコードも思いつくかもしれません。
たったの1行で、前述の2つの例と全く同じ動きを実現できます。
あなた1人が1回だけ必要なのであれば、マクロ記録でできたコードCopyData1が、最も手っ取り早く作成でき目的を達成できるものでした。しかし、チームで使う、または長期で何度も利用するのであれば、ちょっと工夫してCopyData2やCopyData3のようなコードにしておいた方が、可読性、メンテナンス性、再利用性が高い、つまり結果として楽ができるのです。
つまり、誰が使うのか?どのように使うのか?将来何が起きそうか?などにより、最も楽ができる方法が変わります。
もう、お分かりですよね?
その「最も楽ができる」方法、それが「正しい」方法なのです。
VBAの初級レベルから脱するためには、長いコードを書く、複雑な処理をする、といったスキルよりもむしろ、パフォーマンスは落とさずに、コードは短く、構成はシンプルに、急がば回れ、転ばぬ先の杖・・・そういう考え方とアプローチ。それを知り、活用をすること、そんなスキルが必要だということです。
ExcelVBAを実務で使い倒す技術
高橋宣成著
秀和システム 1,800円
苦労してExcelVBAの基礎を学んだのに、期待したほど仕事が楽にならない。実務で使っているうちに、気がついたらVBAが重荷になってきている。あなたは、そんな悩みをお持ちではないでしょうか。本書は、ExcelVBAを実務で使うことを前提に、現場で求められる知識と知恵を解説します。バグを素早く解決する、運用中のマクロを都度メンテナンスする、コードを継ぎ足して機能を足すテクニックなど、現場で必要なノウハウがわかります。
Copyright © ITmedia, Inc. All Rights Reserved.