なぜVBAで「インデント」が重要なのか
VBAでプログラムを書いているとき、あなたは「読みやすいコード」を意識していますか?初心者が陥りやすい罠として、すべてのコードを左端から書き連ねてしまうことがあります。しかし、これでは処理の階層構造(どこからどこまでがIf文の中なのか、Forループの中なのか)が一目で分かりません。
インデント(字下げ)を適切に行うことは、単なる見た目の問題ではありません。バグの早期発見、他者への引き継ぎの容易さ、そしてメンテナンスコストの削減という、実務において極めて重要なメリットをもたらします。
インデントの基礎知識
インデントとは、コードの先頭にスペース(またはタブ)を挿入して、視覚的に階層を作ることを指します。VBAの世界では、「制御構造(If, For, Doなど)に入るたびに、インデントを一つ深くする」のが鉄則です。
例えば、If文の中にFor文がある場合、そのFor文の中の処理はさらに深くインデントを入れます。これにより、コードの「深さ」を見るだけで、プログラムの論理構造が直感的に理解できるようになります。
実装のポイントとVBAエディタの活用
VBAエディタ(VBE)には、手動でスペースキーを叩かなくても、インデントを整える強力な機能が備わっています。
1. Tabキー: 現在の行を右にインデントします。
2. Shift + Tabキー: 現在の行を左に戻します(逆インデント)。
3. 一括整形: コードを書いた後、[表示]メニューから[ツールバー] > [編集]を選択し、[インデント]ボタンや[インデント解除]ボタンを使って範囲選択したコードを一気に整えることができます。
サンプルプログラム:可読性を意識したコード例
以下のコードは、インデントの有無によってどれほど印象が変わるかを示す例です。
良い例(インデント適用済み)
Sub Sample_Indent()
Dim i As Long
‘ 1から10まで繰り返すループ
For i = 1 To 10
‘ 偶数かどうかを判定
If i Mod 2 = 0 Then
‘ 偶数の場合のみイミディエイトウィンドウに出力
Debug.Print i & ” は偶数です”
End If
Next i
End Sub
悪い例(インデントなし)
Sub Bad_Sample()
Dim i As Long
For i = 1 To 10
If i Mod 2 = 0 Then
Debug.Print i & ” は偶数です”
End If
Next i
End Sub
上記を見比べれば一目瞭然です。インデントがないと、どこでループが始まり、どこで条件分岐が閉じているのかを追うために、いちいちコードを目で追いかける必要が出てしまいます。
応用・注意点
現場でのコーディングにおいて、特に注意すべきポイントが2つあります。
1. 全角スペースは厳禁: インデントに全角スペースを使うと、VBAが正しく認識できず「構文エラー」の原因になることがあります。インデントには必ず半角スペースを使用してください。
2. やりすぎない: 階層が深くなりすぎると(例えば5重以上のループなど)、インデントが右側に寄りすぎてしまい、逆に読みにくくなります。その場合は、複雑な処理を別の「サブプロシージャ(Sub)」に切り出すことで、階層を浅く保つ設計を心がけましょう。
「インデントがきれいなコードは、バグが少ない」。これは多くのベテランエンジニアが口を揃える真理です。今日から、コードを書くときは「階層」を意識してインデントを整える習慣を身につけてください。
