【Excelマクロ】変数名の付け方に正解はあるのか?

VBAを学び始めた方から、よくこんな質問を受けます。

「変数名ってどう付けたらいいんですか?」
「英語が苦手で、毎回適当に“a”とか“data1”ってしてます……」

実はこの悩み、初めての方に限らず多くの方が感じているものです。

なぜなら、変数名には明確な“ルール”があるわけではなく、「こうすれば正解」という答えが1つではないからです。

そこで「そもそも変数名に正解はあるのか?」という視点から、実務で読みやすく、再利用しやすくなるための変数名の考え方と、よくある落とし穴について解説します。

変数名は“意味が伝わる”ことが大切

最初にお伝えしたいのは、「変数名は自分(や他人)が読んで意味がわかる」ことが最も大切だということです。

たとえばこんな例

次のような2つのコードを見比べてみましょう。

1. わかりにくい変数名の例

Sub Calc()

    Dim a As Long
    Dim b As Long

    a = Range("A1").Value
    b = a * 1.1
    Range("B1").Value = b

End Sub

2. 意味が伝わる変数名の例

Sub Calc()

    Dim price As Long
    Dim total As Long

    price = Range("A1").Value
    total = price * 1.1
    Range("B1").Value = total

End Sub

2つのコードは、まったく同じ処理をしています。

ですが、後者の方が「price(元の金額)を読み込み、total(税込)を計算して出力している」という意図がすぐに伝わります。

なぜ「意味が伝わる」ことが重要なのか?

  • 後で見返しても、何をしているのか思い出しやすい
  • 他人が読んだときも、構造を理解しやすい
  • 変数の使い間違いやロジックミスが減る

つまり、実務での“バグを防ぐ”ことにもつながるのです。

英語が苦手でもOK!実務でよく使う変数名パターン

「とはいえ、英語の単語がすぐに出てこない……」という方も多いはず。
そこで、実際によく使う“わかりやすく省略された”変数名の例をいくつかご紹介します。

変数名意味よく使う場面
i, jカウンタループ処理(For~Next)
shシート(Sheet)ワークシートを変数化する
wbブック(Workbook)複数ブックを扱う処理
rng範囲(Range)複数セルの操作
val値(Value)数値や文字列の受け渡し
row, col行、列行・列の位置指定
dt日付(Date)日付データを扱うとき
nm名前(Name)氏名や商品名など

これらは、読みやすさと短さを両立した実務向けの省略表現です。

たとえば、次のように使います。

Dim sh As Worksheet
Dim i As Long
Dim val As Variant

Set sh = Worksheets("売上")

For i = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row
    val = sh.Cells(i, 2).Value
    If val > 1000 Then
        sh.Cells(i, 3).Value = "高額"
    End If
Next i

このコードも、すべてフルスペルで書いても間違いではありませんが、「sh」や「val」のように略語でも“意図が伝わる”なら、十分に実用的です。

変数名の付け方に「正解」はあるのか?

結論としては、「これが正解」という唯一の変数名のルールは存在しません
ただし、“実務で読みやすく、誤解を生まない”ことを目的にした「良い書き方のパターン」はあります。

良い変数名のルール(実務編)

次のような観点で考えると、実務で扱いやすくなります。

  • 何を意味する変数か?(金額?日付?名前?)
  • 単語を略しすぎない(意味不明な一文字は避ける)
  • カウント・フラグは明確にする(例:cnt, flg
  • 似た名前の変数は避けるnum1, num2など)

逆に避けたい例

Dim a1 As Long
Dim x As Long
Dim dddd As Variant

これらの変数名は、「何をするためのものなのか」がまったく伝わりません。

このような名前のまま処理を続けると、ロジックの追跡が非常に困難になります。

実装するメリットと長期的な効果

VBAに限らず、プログラムを書くうえで「読みやすい変数名を付ける」ということは、見た目以上に大きな効果を生み出します。

読みやすい変数名のメリット

  • 修正や追加がしやすくなる
  • デバッグ(バグ修正)がスムーズになる
  • 他人に引き継ぐときに説明が不要になる
  • 数ヶ月後に見直しても内容を思い出せる

たとえば、納品書の発行マクロを作成したときに、

Dim custNm As String
Dim sh As Worksheet
Dim outRow As Long

という変数があれば、「ああ、顧客名を扱ってるな」「出力先のシートだな」「書き込む行数だな」と、ぱっと想像できます。

逆に、Dim a As String のような変数では、いちいち中身を調べないとわからず、手戻りが発生してしまいます。

まとめ:変数名は“伝わること”が正解

最後に、今回の内容をまとめると

  • 変数名に唯一の「正解」はないが、“読みやすさ”が大切
  • 短くても意味が伝わる名前(略語)を使うと実務向き
  • 英語が苦手でも、定番の略語パターンを覚えれば十分対応できる
  • 数ヶ月後や他人が見ても理解できるような命名を意識する
  • 読みやすい変数名は、保守・再利用・修正に圧倒的な効果がある

変数名は、マクロの「言葉」であり「設計の骨組み」です。
うまく扱えるようになると、マクロ全体の質が大きく向上します。

完璧を目指す必要はありません。
まずは「自分が読んで意味がわかるか?」という視点から、一歩ずつ改善していきましょう。

コメントする

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

上部へスクロール