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 のような変数では、いちいち中身を調べないとわからず、手戻りが発生してしまいます。
まとめ:変数名は“伝わること”が正解
最後に、今回の内容をまとめると
- 変数名に唯一の「正解」はないが、“読みやすさ”が大切
- 短くても意味が伝わる名前(略語)を使うと実務向き
- 英語が苦手でも、定番の略語パターンを覚えれば十分対応できる
- 数ヶ月後や他人が見ても理解できるような命名を意識する
- 読みやすい変数名は、保守・再利用・修正に圧倒的な効果がある
変数名は、マクロの「言葉」であり「設計の骨組み」です。
うまく扱えるようになると、マクロ全体の質が大きく向上します。
完璧を目指す必要はありません。
まずは「自分が読んで意味がわかるか?」という視点から、一歩ずつ改善していきましょう。
