和風スパゲティのレシピ

日本語でコーディングするExcelVBA

モジュール名の変更方法とおすすめの命名規則

VBAのモジュール名を変更する方法と、
おすすめのモジュール命名規則を紹介します。

モジュール名の設定方法

マクロを書くために標準モジュールを挿入すると、
このように「Module1」などの名前でモジュールが作成されます。

モジュール作成の初期状態


この「Module1」という名前は以下の手順で変更することができます。

① 対象のモジュールを選択する
モジュール名の選択

「プロパティウィンドウ」の(オブジェクト名)欄を入力する
モジュール名の変更

これで「Module1」という名前を好きな名前に変更できます。


入力するプロパティウィンドウの位置は設定によりますが、
初期位置ではプロジェクトエクスプローラーの下にありますので探してみてください。

もし見当たらない場合は、

  • 対象モジュールを選択した状態で[F4:プロパティウィンドウへ移動]
  • [表示タブ] ⇒ [プロパティウィンドウ] を選択

どちらかの方法で表示させることができます。

モジュール名の命名規則

モジュール名は「半角31文字(全角15.5文字)」が上限です。

この上限に納まる範囲で分かりやすい名前を付けましょう。


モジュールの名前を付ける上で重要なのが、
「モジュールの並び替えはできない」という点です。

モジュールは文字コード順(いわゆる索引順)に勝手に並び変わるだけなので、
綺麗な並びにするにはモジュール名を調整する必要があります。


そこでおすすめなのが「英字1~2文字+数字+日本語」にするルールです。

百聞は一見に如かず、実際に設定したものがこちら

モジュール名の設定と命名規則

こんな風に英字+数字を先頭に付けておけば、
モジュールを処理順やボタン押下順に並べることができます。


実行順が決まっているマクロなどでは、
この整理をやっておくとかなりコードが探しやすくなるので是非採用してみて下さい。


最初は「Md1,Md2」「M01,M02」を付けるだけでも十分効果があります。

さらにマクロが複雑になってきたら、画像のような英字で分類も試してみて下さい。


頭文字の英字には好きな文字を使っていただければと思いますが、
一応私のルールを紹介しておくと

頭文字 意味 搭載コード
Df Define 定義モジュール(定数、Enum、マクロ固有関数など)
Op Operation 実行マクロ(ボタン設置、イベントなど)
Pr Process 各工程ごとのメインコード
Ut Utility 汎用関数(自作ライブラリ)

こんな風に命名しています。

気に入ったら採用してみてください。

おまけ:シートのオブジェクト名も同様に変更可

今回プロパティウィンドウでオブジェクト名を設定しましたが、
実はモジュールだけでなく、ワークシートにも名前を付けることができます。


何もしないと「Sheet1」とかになってる場所ですが、
オブジェクト名の変更
これをモジュール名のように「WS + 実際のシート名」と名付けてみましょう。

WSシート名というオブジェクト名


この設定をしておくことで、
シート指定を以下のように書くことができるようになります。

Worksheets("購入データ").Cells(R, 2)
' ↓ シートのオブジェクト名に書き換え
WS購入データ.Cells(R, 2)

コードが簡潔でスッキリしますね!


しかも「WS」を必ず頭につけるルールで全シートを命名したことで、
wsからCtrl+Spaceの「コードの入力補完」機能を起動すれば、

オブジェクト名の選択肢

シートをこの選択肢から選んで入力することができます。
何と素晴らしい!


シート見出し
このリストと同じ選択肢から選べるわけですから、
普通に書くより書きやすく、しかも取り違えも起きにくい入力方法です。


しかも日本語変数は「読みやすいけど入力が面倒」というのが弱点なのですが、
この方法を使えば日本語入力をOFFのままシートの入力ができます。


この時点で既にWorksheets("○○")より優れているのが分かりますが、
さらにWorksheets("○○")と違って

Worksheetからのインテリセンス

このWorksheetオブジェクトのメンバー選択肢も表示されるというおまけつき。


他ブックには使えないという弱点はありますが、自ブックのシートを指定する上では、
取り違えも起きづらく、読みやすく、書きやすい最強のシート指定方法です。

まだ使っていなかった方は是非とも採用してみてください。

www.limecode.jp