なぜ「記録されたマクロ」を読む必要があるのか?
実務でVBAを活用する際、多くの人がまず通る道が「マクロの記録」機能です。しかし、記録されたコードをそのまま放置していませんか?マクロの記録は、Excelが裏側でどのような命令を出しているかを教えてくれる「最高の教師」です。この生成されたコードを読み解き、少しだけ修正できるようになるだけで、自動化できる業務の幅は飛躍的に広がります。今回は、記録されたプログラムをVBE(Visual Basic Editor)で確認し、編集するための基礎を解説します。
基礎知識:VBEとSubプロシージャの構造
マクロの記録によって作成されたプログラムは、「VBE(Visual Basic Editor)」という専用の編集画面で確認できます。コードは必ず Sub マクロ名() で始まり、 End Sub で終わる一つの塊として記述されます。これを「Subプロシージャ」と呼びます。この枠組みの中にある英単語の羅列が、Excelに対する「指示書」となります。
実装:記録したマクロの確認と編集手順
まずは、自分で記録したマクロをVBEで開いてみましょう。
1. Excelの[開発]タブから[マクロ]をクリックします。
2. 一覧から対象のマクロを選択し、[編集]ボタンを押します。
3. すると、画面が切り替わり、コードが記述されたウィンドウが表示されます。
ここで重要なのは、記録されたコードには「不要な動き」が含まれることが多いという点です。例えば、記録中にマウスであちこちをクリックすると、その操作すべてがコードとして書き出されます。これらを削除・整理することが、実務で使えるマクロへの第一歩です。
サンプルプログラム:読みやすく整理したコード例
以下は、特定の行を一括削除する記録マクロを、少し整理して読みやすくした例です。コード内の「’(シングルクォーテーション)」で始まる行はコメント(注釈)であり、プログラムの動作には影響しません。
Sub DeleteData()
‘ 実行日が入力されている行を削除するマクロ
‘ 処理の対象範囲をクリアに指定します
‘ A2セルから最終セルまでを選択してオートフィルタを適用
Range(“A2″).CurrentRegion.AutoFilter Field:=1, Criteria1:=”<>”
‘ 表示されている(空白以外の)行全体を削除
ActiveSheet.AutoFilter.Range.Offset(1, 0).EntireRow.Delete
‘ オートフィルタを解除してA1セルに戻る
ActiveSheet.AutoFilterMode = False
Range(“A1”).Select
End Sub
応用・注意点:現場で陥りやすい罠
実務でマクロを編集する際、最も注意すべきなのは「Select(選択)」の多用です。マクロの記録では、必ずセルを「選択」してから「操作」するコードが生成されますが、VBAではセルを選択しなくても操作が可能です。
例えば「Range(“A1”).Select / Selection.Value = “完了”」と書くよりも、「Range(“A1”).Value = “完了”」と直接書く方が、プログラムの動作は速く、エラーも起きにくくなります。
「記録で動きを確認し、直接書くことでスマートに仕上げる」。このサイクルを意識するだけで、あなたのVBAスキルは一段上のレベルへとステップアップできるはずです。
