【入門編】コメントアウトの極意:コードの「意図」を残すための記述ルール – Excel VBA解析バイブル

スポンサーリンク

コメントは「コードの墓標」ではない。「未来への遺言」だ。

こんにちは。Excel VBAの世界へようこそ。

マクロの記録ボタンを押してコードを生成し、それを少しずつ書き換えていく。多くの人がそのステップからVBAの旅を始めます。しかし、いざ「少し複雑な処理」を書こうとしたとき、あなたはこんな経験をしたことはないでしょうか?

「3ヶ月前の自分が書いたこのコード、一体何をしているんだ?」

動いてはいるけれど、なぜそのロジックを選んだのか思い出せない。怖くて修正できない。その恐怖の正体こそが、「コメントの欠如」です。

今日は、ただコードを説明するだけの「無駄なコメント」を卒業し、あなたのコードを「読み継がれる資産」に変えるための【コメントアウトの極意】を伝授します。

1. 「何をしているか」はコードが語る

初学者が陥りがちな罠が、コードの動作をそのまま日本語に翻訳してしまうことです。

‘ 変数iに1を代入する
i = 1

‘ セルA1の値をセルB1にコピーする
Range(“B1”).Value = Range(“A1”).Value

これは「ノイズ」です。 コードを読めば分かることをわざわざ書く必要はありません。コメントは、コードの行間を埋めるために使うべきです。

2. 「なぜそうしたか」を記録せよ(コンテキストの保存)

プロフェッショナルなエンジニアがコメントに書くのは、「意思決定の理由」です。

VBAはExcelの仕様(ワークシートの制限や計算タイミング)に大きく依存します。あなたが選んだそのロジックには、必ず理由があるはずです。

実践的なコメントの例

‘ 【改善前】
‘ 2行目から最終行までループする
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1).Value = “” Then
Rows(i).Delete
End If
Next i

‘ 【改善後:プロの記述】
‘ 削除処理は末尾から行うのが鉄則。行を削除するとインデックスがずれるため、
‘ 昇順のループ(2から最終行)では途中の行を飛ばしてしまうバグが発生する。
‘ そのため、今回はあえて「下から上へ」ループさせる必要がある。
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If Cells(i, 1).Value = “” Then
Rows(i).Delete
End If
Next i

どうでしょう。下のコメントがあるだけで、後から読む人は「なぜ`Step -1`が必要なのか」を即座に理解し、誤って昇順に戻してバグを生むリスクを回避できます。

3. コメントを書くための「3つのルール」

現場でそのまま使える、コメントの「作法」を伝授します。

① 「避けた方法」を記す

「なぜそのコードにしたか」の裏には、「なぜ他の方法を選ばなかったか」があります。
> 「本来はフィルタ機能を使いたいが、結合セルが多用されているシート構造のため、あえてループ処理を選択」
このように書けば、誰も安易にコードを書き換えて破壊することはありません。

② 「既知の制約」を記す

完璧なコードは存在しません。もしあなたのコードが「特定の条件下でしか動かない」のであれば、堂々と宣言してください。
> 「注意:本処理はシートが保護されていない状態でのみ実行可能」

③ 修正履歴ではなく「意図」を記す

「2023/10/01 修正:山田」といった履歴は、Gitなどのバージョン管理システムに任せましょう。コードの中には、その行が解決しようとしている「ビジネス上の課題」を記述してください。

4. VBE(エディタ)を味方につける

VBAのエディタ(VBE)は地味ですが、コメントを使いやすくする機能があります。

  • コメントブロックのショートカット:

VBEのツールバーにある「編集」メニューから「コメントブロック」「非コメントブロック」を表示させておきましょう。これを使えば、デバッグ時にコードの塊を瞬時に無効化できます。

  • 色分けの活用:

デフォルトでは緑色になるコメント。実は、オプション設定でフォントや色をカスタマイズできます。自分が読みやすい配色に整えるのも、エンジニアとしての第一歩です。

まとめ:あなたのコードは「手紙」である

コメントを書くことは、未来の自分や、いつかあなたのコードを引き継ぐ誰かへの「手紙」を書くことと同じです。

「この処理、これでいいんだっけ?」と迷ったとき、コードの背後にあるあなたの「思考の足跡」が残っていれば、それは何よりも頼りになる道標になります。

「何をしているか(How)」はコードに任せ、「なぜそうしたか(Why)」をコメントに込める。
この意識を持つだけで、あなたのVBAスキルは「動かす」レベルから「設計する」レベルへと確実にランクアップします。

さあ、エディタを開いて、あなたの思考をコードに刻み込んでみてください。応援していますよ。

タイトルとURLをコピーしました