VBAのマクロは「動けばいい」ではありません。読みやすいコードは、修正しやすく・バグも見つけやすく・チームでも使いやすい、実務で本当に価値のあるマクロです。
この記事でわかること:
- 読みにくいコードが引き起こす問題
- 変数名・コメント・インデントなど「見やすさ」のコツ4選
- 実際のコード比較(悪い例・良い例)
読みにくいコードはなぜ問題なのか?
まず、次のコードを見てください。
Sub test()
i = 1:For j = 1 To 5:If j Mod 2 = 0 Then Cells(i, 1) = j:i = i + 1:Next
End Sub
動作としては「1〜5のうち偶数だけをA列に並べる」というシンプルな処理です。しかし、ぱっと見て内容がつかめた方は少ないのではないでしょうか。
これを書き直した例がこちらです。
Sub WriteEvenNumbers()
Dim i As Long
Dim j As Long
i = 1
For j = 1 To 5
If j Mod 2 = 0 Then
Cells(i, 1).Value = j
i = i + 1
End If
Next j
End Sub
処理は同じですが、ずいぶん読みやすくなりましたよね。読みやすいコードには次のようなメリットがあります。
- 数週間後に自分が見ても内容を思い出せる
- 他の人が読んで目的や処理内容を理解できる
- ミスに気づきやすく、修正しやすい
コードの見やすさは、保守性(メンテナンスのしやすさ)に直結しています。
読みやすいコードにするには?
見やすいコードにするためのコツは4つです。難しい技術は不要で、書き方の「ちょっとした心がけ」だけで大きく変わります。
1. 変数名は中身が想像できるようにする
悪い例:
Dim a As Long
Dim b As Long
良い例:
Dim rowIdx As Long
Dim evenNum As Long
何が入っているかわかる変数名にするだけで、コード全体の意図が伝わりやすくなります。なお、ループカウンターのような単純な用途では i や j のような1文字で十分です。
2. コメントは要点を簡潔に書く
' 1〜5の中で偶数をA列に表示する
For j = 1 To 5
If j Mod 2 = 0 Then
Cells(i, 1).Value = j
End If
Next j
コメントは長くなくてよいです。「何をしているか」が一言でわかれば十分です。
3. 1行に複数の処理を詰め込まない
悪い例:
If a > 0 Then b = b + 1:MsgBox "OK"
良い例:
If a > 0 Then
b = b + 1
MsgBox "OK"
End If
1行に処理を詰め込むと、後から読んだときに構造がわかりません。1つの処理は1行に書く習慣をつけましょう。
4. 空行やインデントで構造を見える化する
Sub 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
インデント(字下げ)を使うことで、どこがループの中でどこが条件分岐なのかが一目でわかります。VBEでは Tab キーでインデントを入れられます。
まとめ
- 変数名は中身が想像できる名前にする(例:
rowIdx、evenNum) - コメントは要点を短く、「何をしているか」を一言で
- 1行1処理を意識して、詰め込みすぎない
- インデント・空行で構造を視覚的に見せる
- 読みやすいコードは修正しやすく、バグも見つけやすく、チームでも使いやすい
「動けばいい」から一歩進んで、「読んでもわかる」マクロを目指してみてください。それが実務で本当に使えるVBAへの近道です。
よくある質問
インデントはどのくらいの深さにすればいいですか?
一般的にはスペース4つ分(またはTabキー1回)が標準です。VBEのデフォルトはTab1回でインデントが入ります。深さは統一されていれば問題ありません。
コメントはすべての行に書く必要がありますか?
すべての行に書く必要はありません。「処理のかたまりの先頭」や「パッと見てわかりにくい処理」に絞って書くのが効果的です。多すぎるコメントはかえって読みにくくなることもあります。
変数名はアルファベットのみにしたほうがいいですか?
VBAは日本語の変数名も使えますが、英単語(ローマ字でも可)のほうが一般的です。tankaCost(単価)や gyoNum(行番号)のようなローマ字でも十分伝わります。
1行に複数の処理を書くのはすべてNGですか?
厳密にNGではありませんが、初心者のうちは避けたほうが安全です。複数処理を1行に書く「コロン(:)区切り」は、デバッグ時にエラー行の特定が難しくなる欠点があります。
インデントがずれてしまったとき、まとめて直す方法はありますか?
VBE標準機能での一括整形はできませんが、コードを全選択して Shift + Tab でインデントを減らしたり、Tab で増やしたりすることができます。また「Smart Indenter」などの無料アドインを使うと自動整形が可能です。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



