【VBA基礎編】VBAで使う変数などの命名規則(初心者向け)

Excel VBA VBA基礎編

Excel VBA

変数名に意味を持たせる必要ある?「a」とか「b」じゃダメ?と思った方へ。もちろんプログラムは問題なく動きますが、コードを読むのに時間がかかってしまいます。効率よくVBAを使うためにも可読性は大切にしましょう。

目次

絶対ルール

これらのルールは変数名だけではなく、引数名やマクロ名も同様に守らないとエラーが起きます。

数字は1文字目に書かない

変数名は文字と数字とアンダーバー(_)を使用することが出来ますが、数字やアンダーバーから始めることはできません。ちなみに単語と単語をアンダーバーで繋げる書き方をスネークケースといいます。後述のキャメルケースがよく使われます。

大文字と小文字を区別しない

大文字で宣言したか小文字で宣言したかは保持されますが、ABCとabcは別モノにはなりません。宣言時の表記に統一されます。また、一度変数の宣言に使用した変数名を同プロシージャ内で再度宣言することはできないので注意してください。

役割のある単語はつけられない

データ型が日付である変数に「date」とつけたい。わかります。だって日付は「date」ですもんね。しかし、VBAにおいて「Date」は現在の日付を取得する関数です。こういった役割のある単語(予約語)を変数名にすることはできません。

  • 納品日:deliveryDate
  • 請求日:billingDate
  • 支払日:paymentDate

のように単語を組み合わせましょう。
私は横着して「d1・d2・d3」と書きがちです(コッソリ)

一般的な書き方の種類

キャメルケースとパスカルケース

  • キャメルケース(camelCase)
    先頭の単語は全て小文字、次の単語の頭文字を大文字にする書き方です。途中の大文字がラクダのコブに見えることからキャメルという名前が付いたそうな。

  • パスカルケース(PascalCase)
    全ての単語の頭文字を大文字にする書き方です。"Pascal"というプログラミング言語における書き方だったことが由来だとか。

VBAではキャメルケースを使うことが多いみたいです。変数名・引数名にはキャメルケース、ユーザー定義関数(Functionプロシージャ等)にはパスカルケースと使い分けることも。

よく見る変数名一覧

ゲームでもデフォルト設定が好きな私は、公式とかもそのまま使いたい派です。そんな私の独断と偏見による「よく使う変数名」を紹介します。

変数名 意味・使い方
i for文に使うカウンタ変数。「index」の略。ネストは「j・k」
R 行番号を表すときの変数名。for文でも使う。最終行は「RLast」
C 列番号を表すときの変数名。for文でも使う。最終行は「CLast」
wb オブジェクト型「Workbook」の変数名。使い方は「wb○○」
ws/sh オブジェクト型「Worksheet」の変数名。使い方は「ws○○」
arr 配列の変数名。使い方は「arr○○」※myArrayは好きじゃない。
msg MsgBoxに表示する文字列。「message」の略。
ans インプットボックスに入力された値。「answer」の略。
buf 一時的に変数を使いたい時につける名前。「buffer」の略。
tmp 一時的に変数を(以下略)その二。「temporary」の略。
n ちょっと数字入れたい時に使う。数学でよく出てくるアレ。

※「wb○○」など決まった意味の文字列を先頭や末尾に付けることで分かりやすくする書き方を、ハンガリアン記法といいます。

定数名は大文字+スネークケース

プログラムの途中で値を変えることができる変数と違って、定数は最初に宣言した値をプログラムの途中で変えることができません。よって消費税率などプログラムの途中で値が変わらないものは大文字とアンダーバーを使い「TAX_RATE」と表記します。

邪道!?日本語の変数名

日本語で書いても大丈夫!

そもそも日本語で書けるの?って思いますよね。書けるしちゃんと動くんです!いろいろなサイトで英語(ローマ字含む)で書きましょうと言われていますが、書いたコードは自分しか見ないし、グローバルな職場でもないし…。

私もマクロ名は無意識に日本語で書いていました。というのも、マクロを同じ部署の人に使ってもらう時はボタンにセットしたものではなく、[表示]タブ>[マクロ]から該当のマクロを選択して実行してもらうので、日本語の方が見てわかりやすいからです。マクロ名に日本語が使えるなら変数名にだって使えますよね。

いつかVBAに興味を持った人がコードを見た時に素人であればあるほど日本語の方が見てわかるような気がします。もしコードを見て日本語表記が気持ち悪いと感じても、日本語部分の置き換えなら簡単。先述した日付の例も、長ったらしい英単語なんて書かずに「支払日・請求日・納品日」で全く問題なし!

変数名を日本語で書くことに関して、和風スパゲティさんがとても丁寧に解説されています。
他にもVBAに関するお役立ち情報満載のブログなので要チェックですよ!

見やすいけど全部日本語なのはちょっと…という方には、アプリケーションハンガリアンと日本語を組み合わせた最強の変数名がオススメです。


自分の写真
りり
そもそも「みんなにはナイショ」がコンセプトなので、基本的には自分の中でルールが一貫していればOKです!

QooQ