「マクロの記録」は,簡単にマクロを生成してくれるので,とても魅力的です。
しかし,「自分の力でマクロを組みたい」と思っている方には,お勧めしません。
以下に,その理由を説明します。
「マクロの記録」は,「ユーザーの操作を,機械的に漏れなく記録する」もので,マクロの基本となる形とは全く違います。
エクセルが,記録しやすい形で,記録しているのです。
したがって,これを手本とすると,わけがわからなくなります。
これが,手本にならない一番の理由です。
「マクロの記録」は,ユーザーの操作に関係ありそうなことも,全て記録します。
そのため,ユーザーが操作してないことまで記録します。効率とか,合理性とか,そういったことはお構いなしです。
とにかく,間違いがないように,関係ありそうなことは,やってないことでも,全て記録していきます。
そして,「エクセルにとって記録しやすい記述方式」で記録していきます。
無駄なコードが多いのですから,速度が遅いのも当たり前ですね。
また,データをコピーするとき,「マクロの記録」では,Copyメソッドを使いますが,自分でマクロを組む時には,Copyメソッドは使いません。
なぜなら,命令文がかなり長いうえに,処理速度もかなり遅いからです。
データを他のセルにコピーするときは,RangeやCellsを使います。すると,格段に処理速度が速くなります。
プログラムがプログラムたる所以(ゆえん)は,「繰り返し処理と条件分岐」だと,私は考えています。
「データを元に,適切に判断して,それに合った処理を繰り返し実行する」,これこそがプログラムです。
しかし,「マクロの記録」には,繰り返し処理する部分がありません。条件分岐の判断する部分もありません。
つまり,指示されたことをそのまま実行するのが,「マクロの記録」です。
マクロの命令を1つも知らなくても,結果は出してくれます。
つまり,「ユーザーがやったことを,そのまま実行してくれる」 そういう使い方をする場合は,「マクロの記録」がいいです。
「マクロの記録」の本当の使い方は,きっと「手順通り処理を,ボタン1つでできるようにする」ことだと思います。
この場合,書かれているマクロの意味が全然わからなくても,全く問題ありません。
また,ユーザーのやった通りの手順で実行するだけなので,それ以上は望んではいけません。
「繰り返し処理」や「条件分岐」は諦めましょう。
10回同じ処理をやりたいのであれば,「マクロの記録」でも10回やって記録しましょう。
もし,少しでも「マクロの記録」に手を加える気持ちがあるのなら,最初から組んだ方がきれいなプログラムになります。
「マクロの記録」では,Moduleが自動作成されますが,不要なModuleはその都度削除しておきましょう。整理整頓も大事な作業です。
「マクロの記録」と,「自分でマクロを組む」ことは,まったく別物です。
「マクロの記録」は,」ユーザーがやった操作を,なぞって行うだけのものです。
「自分でマクロを組む」とは,自分ではできないようなことを,プログラムにさせるということです。
例えば,ある処理を1000回繰り返すとか,100個あるデータの中から重複を探し出すとか。
分からないからと言って,「マクロの記録」に頼るのはやめましょう。
その時作った「マクロの記録」は,プログラムの意味が分からないまま,結果だけが手に入ります。
どうしてそうなるのか,全くわからないまま時間は過ぎていくので,技能の上達もありません。
そして,いつか,また同じことで悩むのです。
少しずつでいいので,自分でマクロを組みましょう。その方が,絶対楽しいし,充実感が得られます。