VBAのオブジェクトや変数の命名規則をまとまています。
プログラムの基本的な書き方・作法については、別記事:VBAのコーディングルールで紹介しています。
基本の命名規則
英語、またはローマ字で命名する
英語、またはローマ字表記のアルファベットで命名します。
無理して英単語のみで命名すると、
「英単語自体が難しくて、プログラムが読めない・・・」
となってしまいます。
なので、基本的な単語のみ英単語、難しい単語はローマ字表示で、英語とローマ字が混在となってもOKです!
それと、日本語で命名している参考書もたくさんありますが、やめた方がいいです。
アルファベットの方が、タイピングしている時に入力候補からスムーズに選ぶことができて、コーディングの速さ・正確さが向上します。
複数の単語をつなげる時は、camel 形式かPascal 形式
複数の単語をつなげる時のルールです。VBAでよく使われるのが、camel 形式 (キャメルケース)とPascal 形式 (パスカルケース)です。
clear + uriage + tanka を例に説明します。
camel 形式 (キャメルケース)
最初の単語はすべて小文字、2単語目以降は先頭を大文字にします。
例) clearUriageTanka
変数の名前でよく使います。
Pascal 形式 (パスカルケース)
各単語の先頭を大文字にします。
例) ClearUriageTanka
関数(サブルーチンやファンクション)でよく使います。
名前の先頭にmyをつけない
一部の参考書では、myをつけています。おもな理由は「オリジナル変数とすぐわかる」「予約語(VBAですでに使われている名前)とかぶらない」というだけです。
なので、わざわざmyをつける必要もないなぁというのが個人的な感想です。
それよりも、意味のある名前を付ける方が大事です。
大きなプログラムになると、変数も多く、そのすべてにmyがついていると見にくい・・・
オブジェクト(フォームやボタンなど)の命名規則
オブジェクト名の先頭に、オブジェクトの種類を意味する2~3文字の英小文字(プリフィックス)を付けます。
プリフィックス以外は、各単語の先頭を大文字とします。
例えば売上入力フォームの場合は、フォームを意味するプリフィックス「frm」と、売上入力を意味する「UriageInput」を合わせて、オブジェクト名は「frmUriageInput」となります。
オブジェクトのプリフィックス一覧
オブジェクト名 | プリフィックス | 例 |
---|---|---|
フォーム | frm | 売上入力画面 frmUriageInput |
ラベル | lbl | 商品名ラベル lblShohinName |
テキストボックス | txt | 商品コードテキストボックス txtShohinCode |
コンボボックス | cbo | 区分コンボボックス cboKbn |
リストボックス | lst | 店舗リストボックス lstShop |
チェックボックス | chk | 選択チェックボックス chkSelect |
オプションボタン | opt | 選択オプションボタン optSelect |
トグルボタン | tgr | 処理選択トグルボタン tgrShori |
フレーム | fra | 基本情報入力エリア fraKihonJoho |
コマンドボタン | cmd | 実行ボタン cmdExec |
タブストリップ | tab | 機能切り替えタブストリップ tabKino |
イメージ | img | 商品イメージ imgShohin |
ワークブック | wb | 生徒ワークブック wbSeito |
ワークシート | ws | 住所ワークシート wsJusho |
Range | rng | 電話番号Range rngTel |
フォーム名の例では、frmInputUriageではなく、frmUriageInputと機能名Uriageを先につけています。
そうすることで、他の売上画面(照会や一覧画面)があっても、フォーム一覧を見た時、frmUriage○○○で統一され、まとまって並ぶので管理がしやすくなります。
変数の命名規則
データ型(数値や文字)がわかるように、変数名の先頭に3文字の英小文字(プリフィックス)を付けます。
プリフィックス以外は、各単語の先頭を大文字とします。
繰り返し処理用のループカウンタ(i,j,k)は、プリフィックスを付けなくてもOKです。
複雑な繰り返し処理では、ループカウンタにはiやjでなく、rowNo(行の繰り返し)など意味のわかる名前をつけるのも大事なポイントです。
変数のプリフィックス一覧
データ型 | プリフィックス | 例 | |
---|---|---|---|
ブール型 | Boolean | bln | チェック結果 blnCheckResult |
バイト型 | Byte | byt | 管理番号 bytKanriNo |
整数型 | Integer | int | 売上数 intUriageCnt |
長整数型 | Long | lng | 売上数 lngUriageCnt |
単精度 浮動小数点数型 |
Single | sng | 検査結果 sngKensaResult |
倍精度 浮動小数点数型 |
Double | dbl | 検査結果 dblKensaResult |
通貨型 | Currency | cur | 売上額 curUriageGaku |
日付型 | Date | dtm | 開始日 dtmStartDay |
文字列型 | String | str | 商品名 strShohinNm |
オブジェクト型 | Object | obj | ファイルシステムオブジェクト objFSO |
バリアント型 | Variant | var | 配列 varArray |
列挙型 | Enum | enm | 科目No enmKamokuNo |
でもVBAにおいてはプリフィックスをつけることで、プログラムの見やすさやタイピングの速さ(入力候補による絞り込みが簡単)が増します。なので、初心者のうちはプリフィックスをつけることをオススメします。
関数(サブルーチン、ファンクション)の命名規則
関数の名前の付け方の基本は、動詞+名詞です。
また、各単語の先頭を大文字とします。
たとえばフォームを初期化する関数であれば、ClearFormと名前を付けます。
(サブルーチンはsubやS、ファンクションはfncやFといったプリフィックスを先頭に付けることもあります。)
異なるプログラムでも、「フォームの初期化」や「データの表示」など基本的な処理は同じ名前を付けましょう。
そうすれば仕様変更やバグなどがあっても、修正対象を簡単に見つけることができます。
動詞の名付け一覧
プログラムでよく使われる動詞があるので、一部を紹介します。
関数の名前を付ける際の参考にしてください。
処理内容 | 名付け |
---|---|
クリアする | Clear |
チェックする | Check |
取得する | Get |
表示する | Disp |
登録する | Regist(※Registerの略) |
更新する | Update |
削除する | Delete |
開く | Open |
閉じる | Close |
印刷する | |
送信する | Send |
コピーする | Copy |
カウントする | Count |
取り込む | Import |
定数の命名規則
他の変数と区別がつくように、定数はすべての文字を大文字、また単語の区切りは_(アンダースコア)を使います。
1 2 3 4 |
'消費税率 Public Const TAX_RATE As Currency = 0.08 |
サンプルソースのように、「消費税率」のようなシステム全体で使う数値を、標準モジュールに定数として定義します。
適用範囲による命名規則
変数の適用範囲によって、プリフィックスを付けます。(最近はあまり見ないかも・・・)
適用範囲 | プリフィックス | 例(ユーザ名) |
---|---|---|
グローバル | g | gstrUserNm |
モジュール | m | mstrUserNm |
プロシージャ | なし | strUserNm |
標準モジュールの命名規則
プリフィックスとして、modを付けます。
また、ひとつの標準モジュールに全てのプログラムを書きこまずに、目的に応じて複数の標準モジュールに分けて管理します。
私の場合は、以下のように4つの標準モジュールに分割することが多いです。
標準モジュール名 | 用途 | 例 |
---|---|---|
modCmnConst | いろいろなシステムで使う 共通の定数定義 |
消費税率 |
modCmnFunction | いろいろなシステムで使う 共通の関数定義 |
消費税計算処理 |
mod○○○Const | 現在プログラミングしている システム独自の定数定義 |
試験判定システムの場合: 合格点 |
mod○○○Function | 現在プログラミングしている システム独自の関数定義 |
試験判定システムの場合: 合格判定処理 |
※○○○部分は、システム名を付けます。
このように標準モジュールを分けることで、新しいVBAのシステムを作る時も、基本的な処理はmodCmnConst(共通定数)とmodCmnFunction(共通関数)をコピーして配置するだけでOKです。
そうすることで、基本的な処理のプログラミングをする必要がなくなるため、生産性が向上します。
使えるプログラムは何度も使って、ラクをするのも大事です!
毎回ゼロから作っていると、時間が足りなくなるんで・・・