こんにちは!VBAの基礎から実務の自動化まで、あなたの開発ライフをサポートする先輩エンジニアです。
今回は、VBAの学習において、そして実務でマクロを書き続ける上で、最も大切と言っても過言ではない「コメントアウトの極意」についてお話しします。
マクロの記録から一歩踏み出し、自分でコードを書けるようになると、最初は動くだけで感動しますよね。「よし、今日も自動化できた!」と。
しかし、数ヶ月後にそのコードを開いたとき、こう思ったことはありませんか?
- 「……あれ? この変数、何のためにあるんだっけ?」
- 「ここ、なんでわざわざこんな回りくどい書き方してるんだろう?」
そう、未来の自分は、驚くほど他人なんです。
今回は、コードの「何をしているか(How)」ではなく、「なぜそうしたか(Why)」を残すためのコメントの技術と、メンテナンス性を劇的に高めるルールを伝授します。ここをクリアすれば、あなたのVBAスキルは一段上のステージに行けますよ!それでは、一緒に見ていきましょう。
—
1. 初心者がやりがちな「NGコメント」の罠
まずは、よくある残念なコメントの例から見てみましょう。以下のコードを見て、どう感じますか?
Sub Sample_Bad()
‘ 変数iを宣言する
Dim i As Long
‘ 1から10までループする
For i = 1 To 10
‘ セルにiの値を入れる
Cells(i, 1).Value = i
Next i
End Sub
一見すると、丁寧なコメントがついているように思えますよね。でも、プロの視点から見ると、これは「最悪なコメントの例」です。
なぜなら、コードを見れば「`Dim i As Long`(変数を宣言している)」「`For i = 1 To 10`(1から10までループしている)」というのは、VBAが読める人(そして数ヶ月後のあなた)なら一目でわかるからです。
「コードが語る『何をしているか(How)』を、日本語でただ翻訳しただけのコメント」は、コードを修正したときにコメントの修正漏れを生む原因になり、ノイズ(邪魔な情報)でしかありません。
—
2. 極意:コメントには「意図(Why)」と「背景」を書け
では、どう書くべきなのでしょうか?
優れたコメントとは、「なぜそのコードが必要なのか」「なぜこの書き方を選んだのか」という、コードだけでは伝わらない『意図や背景』を補うものです。
先ほどのコードを、実務で使える「正しいコメント」に書き直してみましょう。
Sub Sample_Good()
Dim i As Long
‘ 【意図】A1:A10のエリアに連番を振ることで、
‘ 後続のデータ転記処理における行数の基準値とする
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub
どうでしょうか。「なぜこの処理をわざわざやっているのか」の文脈(コンテキスト)が見えてきましたよね。これなら、数ヶ月後にこのコードを見たときも、「あぁ、後続の処理の基準値を作るために連番を振ってたんだな」と一瞬で理解できます。
—
3. 実務で役立つ!コメント記述の3大ルール
ここからは、開発現場で明日からすぐに使える具体的なルールを3つ紹介します。
ルール①:「トリッキーな実装」には必ず言い訳(理由)を残す
王道から外れた書き方や、不本意だけどこうせざるを得なかった理由(制約)がある場合は、必ずコメントに残します。
‘ 【注意】Excelの仕様によるバグ(※特定バージョンでのフリーズ)を回避するため、
‘ あえてインデックスを逆順(最終行から上に向かって)で処理しています。
For i = lastRow To 1 Step -1
‘ 処理…
Next i
「なぜ逆順なのか」が書いてあると、後から見た人が「あ、ここはバグ回避なんだな。勝手に順順に変えちゃダメだな」と気づくことができます。
ルール②:未完成の部分や「爆弾(TODO)」を明確にする
開発途中の箇所や、後で修正が必要な箇所には `TODO` というキーワードを使うのがエンジニアの共通言語です。
‘ TODO: 2023年末で仕様が変わるため、来年1月以降は消費税率の取得先を
‘ セル参照ではなく定数に変更する必要あり(担当:佐藤)
Dim taxRate As Double
taxRate = Range(“B1”).Value
こうしておけば、Ctrl + F キーなどで「TODO」を一括検索し、メンテナンス漏れを防ぐことができます。
ルール③:ブロックの頭で「要約」を語る
細かい行ごとではなく、まとまった処理(プロシージャや大きなIF文の塊)の冒頭で、そのブロックが何を達成しようとしているのかを簡潔に示します。
‘ ==========================================
‘ 【処理ブロック】重複データの排除とエラーチェック
‘ ==========================================
If 〇〇 Then
‘ …
End If
—
4. 知っておくと得する!VBEの便利テクニック
コメントを書くときに知っておくと作業効率が爆上がりする、VBE(Visual Basic Editor)の基本機能もおさらいしておきましょう。
1. コメントブロックの切り替え
大量のコードを一気にコメントアウトしたいときは、VBEのツールバーにある「コメント ブロック」と「コメント ブロック解除」のアイコンを使いましょう(ショートカットキーに登録しておくと神のように便利です)。
2. シングルクォーテーション(’)の活用
VBAでは行頭に `’` をつけるとその行がコメントになります。行の途中に書くこともできますが、コードの可読性が落ちるため、基本は「コメントしたい行の真上」に書くのが美しい作法です。
—
まとめ:コメントは「未来の自分へ宛てたラブレター」
Excel VBAのコードは、パソコンに指示を出すためのものであると同時に、「人間(自分や同僚)に向けて書く説明書」でもあります。
「何をしているか(How)」ではなく、「なぜそうしたか(Why)」を意識してコメントを残す習慣をつけてみてください。
数ヶ月後のあなたがコードを開いたとき、「過去の自分、なんて気が利くんだ……!」と感動する日が必ず来ます。
ここをクリアすれば、あなたのVBAスキルは「ただ動くマクロを作る人」から「保守性の高いシステムを組めるエンジニア」へと大きく飛躍しますよ。
明日からのコード書きで、ぜひ意識してみてくださいね!
