【VBAの極意】チーム開発で「嫌われないコード」を書くための美学:インデントとコメントの作法
こんにちは。現場で長年コードを書き続けてきたエンジニアとして、今日は「マクロの記録」で生成された混沌としたコードから脱却し、「プロフェッショナルとして信頼されるVBAコード」を書くための第一歩を伝授します。
VBAは非常に柔軟な言語ですが、その自由さゆえに「誰が書いたか分からない、修正不能なスパゲッティコード」になりがちです。チーム開発において、あなたのコードは「あなた自身」を映す鏡です。後任者があなたのコードを開いた瞬間、ため息をつくか、あるいは感謝するか。その分かれ道は、「インデント」と「コメント」という、極めて地味ながら本質的なルールに集約されます。
—
1. なぜ「インデント」が生命線なのか?
インデント(字下げ)は、単なる見た目の問題ではありません。コードの「構造(論理階層)」を視覚化するための言語です。
インデントがないコードは、地図のないジャングルを歩くようなもの。どこからどこまでが `If` 文の範囲なのか、どこでループが完結しているのかが分からないコードは、バグの温床です。
良い例:構造がひと目で分かる
Sub ProcessData()
‘ 処理の開始
If Range(“A1”).Value <> “” Then
‘ インデントによって階層を明確にする
For i = 1 To 10
Cells(i, 1).Value = “Processed”
Next i
Else
‘ 条件に合わない場合もインデントを揃える
MsgBox “データが空です”
End If
End Sub
悪い例:可読性の欠如(これは「嫌われる」コードです)
Sub ProcessData()
If Range(“A1”).Value <> “” Then
For i = 1 To 10
Cells(i, 1).Value = “Processed”
Next i
Else
MsgBox “データが空です”
End If
End Sub
上の悪い例を見ると、どこがどこに帰属しているのか、視覚的な判断に余計な脳のリソースを消費させますよね。「Tabキーを叩く回数」は、あなたのコードの優しさの数だと思ってください。
—
2. コメントは「コードの言い訳」ではない。「意図」を残す場所
初心者がやりがちな間違いは、コードをそのまま日本語に翻訳するだけのコメントです。
- 悪いコメント例: `i = i + 1 ‘ iに1を足す` (そんなことは見れば分かります)
- 良いコメント例: `i = i + 1 ‘ 処理対象の行を次へ進める` (なぜそうするのか、という理由が書かれています)
ドキュメント作成の黄金ルール:ヘッダーコメント
プロの現場では、プロシージャ(SubやFunction)の冒頭に、その役割を明記します。これだけで、後任者の作業時間は劇的に短縮されます。
‘ —————————————————————————
‘ プロシージャ名: ClearWorksheet
‘ 概要: 指定されたシートのデータを初期化し、ヘッダー行を維持する
‘ 引数: targetSheet (Worksheet) – 対象のシートオブジェクト
‘ 戻り値: なし
‘ 作成日: 2023/10/27
‘ —————————————————————————
Sub ClearWorksheet(targetSheet As Worksheet)
‘ 念のため画面更新を停止して高速化
Application.ScreenUpdating = False
‘ データが存在する場合のみクリア(2行目以降を対象とする)
If targetSheet.Cells(Rows.Count, 1).End(xlUp).Row > 1 Then
targetSheet.Range(“A2:Z” & targetSheet.Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
End If
Application.ScreenUpdating = True
End Sub
—
3. VBE設定で「自動インデント」を味方につける
いちいち手動でTabキーを叩くのが面倒だと思ったあなた。素晴らしい感覚です。エンジニアは「面倒なことは仕組みに任せる」のが鉄則です。
VBE(Visual Basic Editor)を開き、以下の設定を確認してください。
1. VBEのメニューバーから `ツール` > `オプション` をクリック。
2. `エディタの設定` タブを確認。
3. 「自動構文チェック」と「変数の宣言を強制する」にチェックを入れる。
※特に「変数の宣言を強制する(Option Explicit)」は必須です。これがないと、タイポ一つでバグが発生し、原因追及に何時間も費やすことになります。
—
最後に:コードは「未来の自分へのラブレター」
あなたが今日書くコードは、半年後の自分が修正するかもしれません。あるいは、全く知らない誰かが引き継ぐかもしれません。
インデントを揃え、適切なコメントを残すことは、「相手に対するリスペクト」です。美しいコードは、それだけでメンテナンスコストを下げ、バグを減らし、チームの生産性を向上させます。
「ここをクリアすれば、Excel VBAの基本はバッチリ」です。
まずは今日から、自分の書くコードに「一つだけ」丁寧なコメントを添えることから始めてみてください。その小さな積み重ねが、あなたを一流のオートメーションエンジニアへと引き上げてくれるはずです。
何か分からないことがあれば、いつでも聞いてくださいね。一緒に最高にクールなコードを書いていきましょう!
