モジュールレベル変数について少しだけ触れています。モジュールレベル変数とプロシージャレベル変数の違いだけを解説するため、プロシージャの外でDimキーワードを使って宣言する形で解説をしていますが、実際にモジュールレベル変数を使う場合には、DimよりもPrivateで宣言するほうが、意味がより明確になってイイでしょう。セブンネットヨドバシ.comHonyaClub.comそして実は、Privateの対語でもあるPublicというキーワードを使って変数を宣言することも可能です。この変数宣言の、PrivateとPublicの違いがよくわからないという方が、時折いらっしゃいます。PrivateとPublicの違い標準モジュールの変数宣言部で、PrivateとPublicを使った場合の違いを結論からお伝えすると、以下のとおりです。Privateで宣言された変数は、宣言したモジュールの中でのみ、どこからでも使えます。これに対し、Publicで宣言された変数は、プロジェクト全体の中で、どこからでも使えます。Private変数とPublic変数を用意する実際にコードを書いて確認しましょう。PrivateとPublicの違いを確認するには、モジュールを2つ以上用意する必要があります。今回は、Publicで宣言する変数や、プロジェクト全体で広く使われるプロシージャ等を配置することを想定した標準モジュールの名前を「Common」に、通常のプロシージャ等を配置する標準モジュールはデフォルトのまま「Module1」としてみます。プロジェクトエクスプローラーは下図のような状態になります。Commonモジュール2つのモジュールが準備できたら、Commonモジュールに以下のようにPublicで変数を宣言します。Long何らかの数をカウントすることを想定した変数g_cntを、Long型で宣言しています。Publicで宣言したグローバル(global)変数ということを明確にするため、接頭辞g_を付けた、g_cntという名前にしました。Module1モジュールつづいてModule1モジュールには、以下のようにPrivateで変数宣言を行い、Subプロシージャも作成しましょう。Subモジュールレベルで何らかの数をカウントすることを想定した変数m_cntを、やはりLong型で宣言しています。Privateで宣言したモジュール(module)レベル変数ということを明示するために、接頭辞m_を付けた、m_cntという名前にしました。Subプロシージャsampleには、変数g_cntとm_cntをインクリメントする処理だけを書いています。VBAProjectのコンパイルと接頭辞この状態でメニュー[デバッグ]-[VBAProjectのコンパイル]を実行すれば、エラーが発生することなくコンパイルが行われます。ちなみに、接頭辞をg_とm_にしていますが、これはどの範囲で有効な変数なのかを判別しやすくするため便宜的につけただけで、必ずこうしなければならないというわけではありません。実務でどうするのかは、コーディング規約で決めましょう。変数のPrivateとPublicを確認するここまでは変数のPrivateとPublicの違いを確認するための、いわば準備作業です。実際の違いを体験しましょう。Commonモジュールに以下のSubプロシージャを追加して、[VBAProjectのコンパイル]を実行してみてください。Sub先ほど、Commonモジュールに作成したsampleプロシージャと同じ処理が書かれているだけですが、変数m_cntが反転した「変数が定義されていません。」コンパイルエラーが発生します。Module1内でPrivateキーワードを使って宣言された変数m_cntは、Commonモジュールからは、見えていない状態になっているということです。変数m_cntは、Module1内でならどこでも使えますが、他のモジュールでは使えないわけです。これに対し、Module1モジュールに作成したSubプロシージャsampleでは、Privateで宣言された同じモジュール内にあるm_cntだけでなく、別のモジュールであるCommonモジュールでPublicキーワードを使って宣言したg_cntも見えているわけです。これが、PrivateとPublicの違いです。PrivateとPublicの違いPrivateで宣言された変数は、宣言したモジュールの中でのみ、どこからでも使えます。Publicで宣言された変数は、プロジェクト全体の中で、どこからでも使えます。インストラクターのネタ帳Private変数とPublic変数の違いを、オブジェクトブラウザーで確認する手順をご紹介しています。インストラクターのネタ帳ローカルウィンドウでは、グローバル変数の中身を確認できません。ウォッチウィンドウを使いましょう。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。(2006.12.29)「PERSONAL.XLSは編集中のためロックされています。