VBAのコードを見やすく書く方法|変数名・コメント・インデント・1行1処理の書き方

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

何が入っているかわかる変数名にするだけで、コード全体の意図が伝わりやすくなります。なお、ループカウンターのような単純な用途では ij のような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 キーでインデントを入れられます。

まとめ

  • 変数名は中身が想像できる名前にする(例:rowIdxevenNum
  • コメントは要点を短く、「何をしているか」を一言で
  • 1行1処理を意識して、詰め込みすぎない
  • インデント・空行で構造を視覚的に見せる
  • 読みやすいコードは修正しやすく、バグも見つけやすく、チームでも使いやすい

「動けばいい」から一歩進んで、「読んでもわかる」マクロを目指してみてください。それが実務で本当に使えるVBAへの近道です。

よくある質問

インデントはどのくらいの深さにすればいいですか?

一般的にはスペース4つ分(またはTabキー1回)が標準です。VBEのデフォルトはTab1回でインデントが入ります。深さは統一されていれば問題ありません。

コメントはすべての行に書く必要がありますか?

すべての行に書く必要はありません。「処理のかたまりの先頭」や「パッと見てわかりにくい処理」に絞って書くのが効果的です。多すぎるコメントはかえって読みにくくなることもあります。

変数名はアルファベットのみにしたほうがいいですか?

VBAは日本語の変数名も使えますが、英単語(ローマ字でも可)のほうが一般的です。tankaCost(単価)や gyoNum(行番号)のようなローマ字でも十分伝わります。

1行に複数の処理を書くのはすべてNGですか?

厳密にNGではありませんが、初心者のうちは避けたほうが安全です。複数処理を1行に書く「コロン(:)区切り」は、デバッグ時にエラー行の特定が難しくなる欠点があります。

インデントがずれてしまったとき、まとめて直す方法はありますか?

VBE標準機能での一括整形はできませんが、コードを全選択して Shift + Tab でインデントを減らしたり、Tab で増やしたりすることができます。また「Smart Indenter」などの無料アドインを使うと自動整形が可能です。


動画で学びたい方へ

「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。

VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール