皆さん、こんにちは。ベテラン講師の私と、おてんばで成長著しいマクロガール・マコの掛け合いで学ぶ、VBA実践講座へようこそ。今日は、多くの初心者が陥る「記録マクロの罠」についてお話ししましょう。
記録マクロはあくまで「台本」に過ぎない
ある日の講義で、マコが意気揚々とコードを見せてくれました。「先生!ボタン一つで日報を転記するマクロが完成しました!」と。確かに動きます。しかし、そのコードは「A1セルを選択し、コピーし、シート2のB5セルを選択して貼り付ける」といった、操作をなぞるだけの記述で埋め尽くされていました。
これでは、データ行数が1行増えるだけで、マクロはエラーを吐くか、間違った場所を上書きしてしまいます。実務の世界では、「データ量が変わっても動くこと」が絶対条件なのです。
「選択」を排除する技術を身につけよう
マコに私が教えたのは、Selectメソッドを使わない書き方です。記録マクロは「どこかを選択する」という動作をすべて記録しますが、VBAの本質は「セルを指定して値を代入する」ことにあります。
例えば、Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) といったコードを使い、データが入っている一番下の行を自動で判定させる。これだけで、マクロの安定感は劇的に変わります。マコも最初は「Cellsを使うなんて難しそう」と言っていましたが、一度「選択しない」書き方を覚えると、画面がチラつかず、処理スピードが格段に速くなることに驚いていました。
「可変性」こそが実務を救う
実務の現場では、急な仕様変更がつきものです。「明日から列を一つ増やしてほしい」と言われたとき、記録マクロを頼りにしていると、最初からやり直しになってしまいます。しかし、私たちが学ぶ「変数」や「繰り返し処理」を組み合わせたコードなら、修正箇所を最小限に抑えることが可能です。
マコが最後に言った言葉が印象的でした。「マクロを書くことは、作業を自動化するだけじゃなくて、業務の未来を設計することなんですね」。その通りです。皆さんも、ただボタンを押して終わるマクロではなく、どんなデータが来ても受け止められる「タフなコード」を目指しましょう。
次回は、そんなマコと一緒に「エラーが起きても止まらない、最強の例外処理」について深掘りしていきます。お楽しみに!
