ここでは、Option Private Module の具体的な使用例を掲載しています。文章だけでは、なかなかさらっと把握することは難しいこともあります。私の場合は「特に」ですが。。。
[MSDN] Option Private ステートメント より
Option Private ステートメントを使用する場合は、モジュールレベルのすべてのプロシージャの前で指定する必要があります。
モジュールに Option Private Module が含まれると、モジュール レベルで宣言されている変数、オブジェクト、ユーザー定義型などのパブリック部分は、そのモジュールを含むプロジェクト内では同じように使用できますが、他のアプリケーションまたはプロジェクトでは使用できなくなります。
スポンサーリンク
Option Private Module の使用サンプル
まずは、標準モジュールを2つ(Module1、Module2)作成して、それぞれに Public 関数を記述します。Module1 には、「Option Private Module」を1行目に記述していますが、Module2 には、その記述はありません。
Module1
Option Private Module ' Private Module 設定 Option Explicit ' Public 関数 Public Function Public_Function_Private() As Boolean Public_Function_Private = False End Function
Module2
Option Explicit ' Public 関数 Public Function Public_Function() As Boolean Public_Function = True End Function
これらの関数はともに Public 関数なので、別のモジュールなどからも制約もなく呼び出すことはできます。
プロジェクト外からの呼び出し
次に、Option Private Module による影響を確認するために、これらの関数をエクセルシート上から呼び出してみます。シート上から今回、標準モジュールに定義した関数を呼び出そうとしていますが、Module2 に定義した関数はインテリセンスに一覧表示されてますが、Module1 に定義した関数は呼び出し可能な関数とは認識されていません。
Option Private Module による影響であることがわかります。なお、Module1 の「Option Private Module」を削除すると、呼び出し可能関数として「Public_Function_Private 関数」も一覧に表示されるようになります。
以上、Option Private Module の動作確認例でした。おわり