VBA アドインのPublicスコープ範囲

PC[コンピュータ]

以下は言語仕様的には、明確な記述が見つからなかったが、経験的にまとめる。

アドイン側で定義されたいPublic変数

これに関しては、アドインを利用する側でもPublic変数として利用が行える。

理解としては、アドイン側を参照設定をする事で、参照設定を利用する側(ここではメインとする)では、定義Public変数のスコープ範囲がメイン側にも見えている形になる。

メイン側で定義されたいPublic変数

これは、アドイン側では参照できない。
メイン側のPublic変数のスコープ範囲には、アドイン側に含まれない。
これが 参照設定 たるゆえんと言える。

言語仕様的には、こじつけた感じはあるが、こういう理解しかできない。

メイン側とアドイン側で同一名表で定義されたPublic変数

これは、メイン側プロジェクトとアドイン側プロジェクトでそれぞれ個別に定義された物として、それぞれのプロジェクトがスコープ範囲となる。
いわば、プロジェクト内有効のPublic変数 と見なす事ができる。

この場合、オブジェクトブラウザー上には、同一名表のPublic変数(=クローバル変数)が存在する事になる。

もしこのような事をした場合、メイン側からアドイン側のPublic変数にアクセスするには、[projectname].object.member という形式でアクセスらしい。

Excel VBA 2019にて確認した。

妙な言語仕様と思えるが、既にこういう動作をしているので、今後も変更される事はないと考えられる。