VBAの命名規則

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

 

POINT
フォーム名の例では、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

 

※VB.NETのサイトなどではプリフィックスに対する否定的な意見が多いです。
でもVBAにおいてはプリフィックスをつけることで、プログラムの見やすさやタイピングの速さ(入力候補による絞り込みが簡単)が増します。なので、初心者のうちはプリフィックスをつけることをオススメします。

関数(サブルーチン、ファンクション)の命名規則

関数の名前の付け方の基本は、動詞+名詞です。

また、各単語の先頭を大文字とします。

たとえばフォームを初期化する関数であれば、ClearFormと名前を付けます。
(サブルーチンはsubやS、ファンクションはfncやFといったプリフィックスを先頭に付けることもあります。)

 

POINT
異なるプログラムでも、「フォームの初期化」や「データの表示」など基本的な処理は同じ名前を付けましょう。
そうすれば仕様変更やバグなどがあっても、修正対象を簡単に見つけることができます。

 

動詞の名付け一覧

プログラムでよく使われる動詞があるので、一部を紹介します。

関数の名前を付ける際の参考にしてください。

処理内容 名付け
クリアする Clear
チェックする Check
取得する Get
表示する Disp
登録する Regist(※Registerの略)
更新する Update
削除する Delete
開く Open
閉じる Close
印刷する Print
送信する Send
コピーする Copy
カウントする Count
取り込む Import

定数の命名規則

他の変数と区別がつくように、定数はすべての文字を大文字、また単語の区切りは_(アンダースコア)を使います。

 

サンプルソースのように、「消費税率」のようなシステム全体で使う数値を、標準モジュールに定数として定義します。

 

適用範囲による命名規則

変数の適用範囲によって、プリフィックスを付けます。(最近はあまり見ないかも・・・)

適用範囲 プリフィックス 例(ユーザ名)
グローバル g gstrUserNm
モジュール m mstrUserNm
プロシージャ なし strUserNm

 

標準モジュールの命名規則

プリフィックスとして、modを付けます。

また、ひとつの標準モジュールに全てのプログラムを書きこまずに、目的に応じて複数の標準モジュールに分けて管理します。

私の場合は、以下のように4つの標準モジュールに分割することが多いです。

標準モジュール名 用途
modCmnConst いろいろなシステムで使う
共通の定数定義
消費税率
modCmnFunction いろいろなシステムで使う
共通の関数定義
消費税計算処理
mod○○○Const 現在プログラミングしている
システム独自の定数定義
試験判定システムの場合:
合格点
mod○○○Function 現在プログラミングしている
システム独自の関数定義
試験判定システムの場合:
合格判定処理

※○○○部分は、システム名を付けます。

 

POINT
このように標準モジュールを分けることで、新しいVBAのシステムを作る時も、基本的な処理はmodCmnConst(共通定数)とmodCmnFunction(共通関数)をコピーして配置するだけでOKです。
そうすることで、基本的な処理のプログラミングをする必要がなくなるため、生産性が向上します

使えるプログラムは何度も使って、ラクをするのも大事です!

毎回ゼロから作っていると、時間が足りなくなるんで・・・

関連記事

VBAの開発ルール
VBAおすすめ本
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
成果を出す5つのポイント
VBA開発ルール
えくとしょ | 初心者のためのエクセルとVBAの図書館
タイトルとURLをコピーしました