Privateで宣言された変数とPublicで宣言された変数の違いについて解説しました。
モジュールレベル変数とグローバル変数の違いは、もちろんオブジェクトブラウザーにも表れます。
オブジェクトブラウザーで確認するプロジェクトの状態
Commonモジュールで変数g_cntだけがPublicで宣言され、
Module1モジュールで変数m_cntがPrivateで宣言され、Subプロシージャsampleが存在しているときの、
オブジェクトブラウザーを見てみましょう。
VBAProjectの選択
オブジェクトブラウザーを表示して、[ライブラリ選択ボックス]で「VBAProject」を選択すると、下図のような表示になります。
[クラスペイン]に、上述のとおり作成した標準モジュールCommonとModule1の他に、デフォルトで存在するオブジェクトモジュールの、Sheet1モジュールとThisWorkbookモジュールが表示されています。
Commonモジュールの状態
[クラスペイン]でCommonモジュールを選択しましょう。
[メンバーペイン]には、もちろん変数g_cntだけが「'Common'のメンバー」として表示されます。
Public変数g_cntの確認
変数g_cntを選択すると、詳細ペインにはCommonモジュールで変数宣言したとおり、
「Public g_cnt As Long」と表示されます。
また「VBAProject.Commonのメンバー」と、このプロジェクト内のCommonモジュールに存在していることも表示されています。
Module1モジュールの状態
つづいて[クラスペイン]でModule1モジュールを選択しましょう。
[メンバーペイン]には、変数m_cntと、Subプロシージャsampleが「'Module1'のメンバー」として表示されています。
Private変数m_cntの確認
変数m_cntを選択すると、詳細ペインにModule1モジュールで変数宣言したとおり、
「Private m_cnt As Long」などと表示されていることを確認できます。
Subプロシージャsampleの確認
[メンバーペイン]でsampleを選択すると、詳細ペインには「Public Sub sample()」とSubプロシージャのsampleの定義が表示されます。
実際のコードは「Sub sample()」でしたけれど、
VBAではプロシージャの定義時にPrivateを省略したときはPublicと見なされるため、オブジェクトブラウザーでは「Public Sub sample()」と表示されています。
<グローバル>の確認
CommonモジュールとModule1モジュールについて確認したら、<グローバル>を確認しましょう。
[クラスペイン]で<グローバル>を選択してみると、
CommonモジュールでPublicキーワードを使って宣言された変数g_cntと、Module1モジュールに作成したSubプロシージャsampleだけが表示されています。
このプロジェクト内でどこからでも使える、Publicで宣言したグローバル変数g_cntと、PublicとみなされるSubプロシージャsampleだけが「'<グローバル>'のメンバー」として表示されています。
Module1モジュールでPrivateキーワードを使って宣言した、モジュールレベル変数m_cntは、ここには表示されていません。
最終更新日時:2018-09-20 06:52
- Newer:SUBTOTALの103とは
- Older:変数のPrivateとPublicの違い
Home » VBE(Visual Basic Editor) » 変数のPrivateとPublicの違いをオブジェクトブラウザーで確認する