VBEには「マクロの記録」という機能があります。実際にExcel上で行った操作を自動的にVBAコードに変換してくれる便利な機能ですが、できることとできないことを正しく理解することが大切です。
この記事では、マクロの記録の仕組み・生成されるコードの読み方・限界と有効な使い方を解説します。
マクロの記録で生成されるコードとは?
「A1セルをコピーしてA2に貼り付ける」操作を記録すると、次のようなコードが自動生成されます。
Sub Macro1()
Selection.Copy
Range("A2").Select
ActiveSheet.Paste
End Sub
操作をそのままコード化しているため、Selection.Copy(選択セルをコピー)・Range("A2").Select(A2を選択)・ActiveSheet.Paste(貼り付け)という流れになっています。
注意点として、最初にA1が選択されていたのでA1がコピーされましたが、別のセルが選ばれている状態で実行するとそのセルがコピーされてしまいます。記録されたコードはアクティブな状態に依存するため、意図した動作にするには修正が必要なことが多いです。
マクロの記録でできないことは何か?
VBAを構成する要素は「オブジェクト・プロパティ・メソッド・関数・ステートメント」の5つですが、マクロの記録でコード化されるのは前半の3つ(オブジェクト・プロパティ・メソッド)のみです。
次のような処理はマクロの記録では作れず、自分でコードを書く必要があります。
If〜Then(条件分岐)For〜Next(繰り返し処理)- 変数の宣言と計算
- MsgBox・Format などのVBA関数
マクロの記録の有効な使い方とは?
マクロの記録を「操作内容を調べるツール」として活用するのが最も効果的な使い方です。
たとえば「セルに罫線を引く」VBAコードがわからないとき、実際に手動で罫線を引きながら記録すると、対応するコードが確認できます。毎回書籍やインターネットで調べるより、記録して読み解く方が早く習得できます。
' 記録で生成されたコードの例(罫線の設定)
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
End With
このように生成されたコードを読んでプロパティ名やメソッド名を覚え、その後は自分でシンプルに書き直す、という学習サイクルが効果的です。
まとめ
- マクロの記録は操作をそのままVBAコードに変換してくれる機能
- 記録されるのはオブジェクト・プロパティ・メソッドのみ。条件分岐・繰り返し・関数は記録されない
- 生成されたコードはアクティブな状態に依存するため、そのまま使うと誤動作することがある
- 「どのコードを書けばいいかわからない操作を調べる」逆引き辞典として使うのが最も有効
- 記録 → 読み解く → 書き直す、のサイクルでVBAの習得が加速する
よくある質問
マクロの記録はどこから起動しますか?
「開発」タブの「マクロの記録」ボタンから起動できます。開発タブが表示されていない場合は、Excelのオプション→「リボンのユーザー設定」から「開発」にチェックを入れると表示されます。
記録したマクロをVBEで修正できますか?
できます。記録後に Alt+F11 でVBEを開くと、生成されたコードが確認・編集できます。不要な .Select を削除したりシートを明示したりして、より安定したコードに書き直すことができます。
記録されたコードに不要な部分が多いのはなぜですか?
Excelは操作を忠実に記録するため、自動的に選択された状態なども含めてすべてコード化します。実際に必要なのはその一部だけなので、不要な Select・Activate などを削除してシンプルにするのが実務でのコードの改善方法です。
マクロの記録で作ったコードはそのまま実務で使えますか?
単純な繰り返しのない操作なら使えます。ただし、データ件数が変わったり条件によって動作を変えたりする場合は、手動で For〜Next や If〜Then を追加する必要があります。
記録中に間違えた操作をしてしまったらどうなりますか?
間違えた操作もすべて記録されます。記録を止めてから該当部分のコードを手動で削除するか、やり直して再記録するのが確実です。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



