Excelマクロは「マクロの記録」という方法をつかうと、Excel上でマウスなどを使って行った動作を自動的にマクロのコードに変換することができます。
この「マクロの記録」に関しては便利な反面、困る一面もありますので今回はどのような時に困るケースがあるのかを記事にしてみようと思います。
マクロの記録で困る点1 標準モジュールやプロシージャが増えすぎてわかりにくくなる。
「マクロの記録」はマクロの記録をするたびに「標準モジュール」が作成されることになります
標準モジュールとはマクロの作成画面の左側に作成されるこの項目のことです↓
一度、Excelブックを閉じて、再度Excelを開き「マクロの記録」をすることで再度この標準モジュールが追加されることになります。
実際にやるとこんな感じになります↓
ちなみにExcelブックを閉じずに、連続してマクロの記録を実行するとプロシージャがどんどん追加されます↓
1、2個程度なら標準モジュールが増えようが、プロシージャが増えようが特に困りませんが、マクロの記録を毎回毎回行うと、この標準プロシージャがどんどん積み重なっていき10個、20個となる可能性があります。
そうなると、「どの部分に対してどんなマクロが書かれているのか、後で見る人が分かりにくくなる」という事態を招きます。
なんならマクロの記録をした本人ですら何をやっているかわからないという状態になることも十分にあり得ます。
これがマクロの記録の困る点です。
自分でコードを書く場合には不要なマクロはあらかじめ削除したうえで新しいコードを書いていくため、このような状態にはなりにくいです。
マクロの記録で困る点2 コードの記述量が増えすぎて読みにくい。
マクロの記録は全ての動作を「丁寧」にコードに変換してくれますので、マクロの記述量が膨大になります。結果としてコードが見にくくなることがよくあります。
例えば「罫線をA1セル周辺のセル全体に引く」という作業を「マクロの記録」を使って行うとこんな感じの膨大なコードが記録されます。
作業自体は「罫線を引く」だけなのに異常な量のコードが記録されてしまいます。もうパッと見で見にくい。拒否反応がでます。
同じ作業であればこのように書くことで実行が可能です。必要なコードは1行です。
Sub test()
Range("a1").CurrentRegion.Borders.LineStyle = xlContinuous
End Sub
こういった感じでマクロの記録をすると異常に長いコードが記録されてしまうことがあります。
「どっちにしろ、同じ処理結果が得られるから別にいいじゃん。」と言われればまぁそこまでなんですが。。。
もし自分以外の他人がコードを見ることを想定するとシンプルなコードがいいと思います。
この点「マクロの記録」ではシンプルにコードを作成することが難しいです。
おまけ。コメント行は多めに入れておく方が後々自分を助けることになります。
「マクロの記録」に限ったことではないのですが、マクロを作成した場合にはコメント行は基本的に作られることはありません。
コメント行を作ることでマクロの内容を「パッと」見ただけでわかるようにすることができるという効果がある為、コメント行は積極的に入れた方がいいと考えています。
自分自身しか使わないマクロであっても数ヶ月経ってしまうとどんな内容のマクロだったのか覚えていないことは【あるある】です。
コメントを入力しておくことで他人がそのマクロを使用する場合や、将来の自分を助けることにもなります。
コメント行はこういったもので緑色の文字で表示される箇所になります↓
マクロの記録の場合はこのコメント行が全く作成されない(マクロの記録がすべて終了しないとコメントを付すことができない)ので上でも述べたようにどのシートに対してのどういったマクロなのかを解読するのに時間がかかることになります。
自分でマクロを作成する場合には作成しながらコメントが必要な箇所にその都度コメントを入れることができますのでこの点で「マクロの記録」よりはマシな感じがします。
まとめ
「マクロの記録」でマクロを作成することが悪いというつもりは全くないのですが、マクロの記録を使用してマクロを作成した場合には、その後マクロの数が多くなった場合にはマクロは削除(またはエクスポート)などのメンテナンスが必要になります。
少しでも他人がそのExcelファイルを使う可能性があるのであれば誰が見ても分かりやすい状態にマクロを整えておく必要があると考えています。
【本日の近況報告】
ある法人の銀行の総合振込データの作成をCSVデータのインポートから実施。
今まで、毎回手入力で総合振込のデータを作成していたのですが、今回から経理資料の作成過程でできあがるデータを転用することで総合振込のデータを作成することにしました。
振込金額の入力間違いや入力時間の短縮につながるので少しは効率化できたのかなと思います。
【本日の1曲】
Peter Bjorn And John/Young Folks
口笛ソングで有名なこちらの1曲。
久しぶりにテレビで流れているのを聴いて思い出して聴いてみました。
リリース当初はピンとこなかったのですが、しばらくしてから気に入ってその後レコードを購入した思い出があります。
といってもこの1曲しか知りませんが。
だいたい、3日前の晩御飯のメニューも覚えていないのに数か月前に作ったマクロのコードの内容を覚えているわけがありません。