[ VBA ] Option Private Module – プロジェクト内のみで使用できるようにする

Pocket

ここでは、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 の動作確認例でした。おわり

スポンサーリンク


Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>