2

VBAでは、現在のプロジェクト内でのみサブ/関数にアクセスできるようにする場合は、それらのメソッドを。とマークされたモジュールに配置できることを知っていますOption Private Module

しかし、クラスモジュール内の特定のメソッドでこれを実行したい場合はどうなりますか?1つのメソッドをクラスから分離できますか?

具体的には、現在のプロジェクト内で使用されていない限り、読み取り専用にしたいクラスの1つにプロパティがあります。そのクラス内には、本当に公開したい他のプロパティ/サブ/関数があります。

Friend Property Let...これを行う正しい方法かもしれないと思いましたが、試してみると、同じ開いているExcelセッション内の別のプロジェクトがプロパティに割り当てるのを停止しません。Option Private Moduleしたがって、クラス内の関数のサブセットに 相当するものを探しています。

これは可能ですか?


この質問に取り組む別の方法は次のとおりです。クラスモジュールを複数のサブモジュールに分散させることはできますか?

4

1 に答える 1

3

この質問にはあまり注目されておらず、うまく表現できていないかもしれないので、当面の間、この問題をどのように解決することにしたかを将来の世代のために投稿したいと思いました.

PrivateVBA のクラスはまたはのみであるPublicNotCreateableため、オブジェクトを作成できるように既にファクトリ メソッドを使用していました。
ファクトリ メソッドにコードを追加して、各オブジェクトに一意の識別子を割り当て、独自のデータ構造でプロジェクト スコープの疑似プロパティを追跡しました。クラスにはプロパティの "Get" がありますが、それに割り当てるには、Option Private Moduleモジュール内の特別なプロジェクト スコープ関数を呼び出す必要があります。
完全な解決策ではありませんが、少なくとも私が望むことはできます。

于 2012-05-31T11:52:46.510 に答える