2017-01-02 6 views
2

UDTを他の関数に渡そうとするたびに、このコンパイルエラーが発生します。「パブリックオブジェクトモジュールで定義されたユーザー定義型のみが、バリアントとの間で強制的に変換されるか、遅延バインド関数に渡されます。ユーザー定義型の操作方法を教えてください。

UDTを引数として使用してテストした唯一の内部関数はVarPtrです。 TypeNameやVarTypeを使用することさえできません。

明示的に特定のタイプを期待していない引数としてUDTを渡す方法はありますか?バリアントのようなものですが、UDTのものです。

また、配列/辞書/コレクションにUDTを格納したいと思っていますが、これも問題があるようです。 UDTは私のニーズに完璧に聞こえるが(別のクラスモジュールを持たなくてもよい)、非常に厳密に型付けされているように思える。

EDIT:VarPtrは引数を「Any」型とみなしているようです。そのため、VariantとUDTを受け入れるタイプかもしれません。問題は、Excelに組み込まれているVBA IDEでそのタイプを使用できないということです。

+0

* *別のクラスモジュールを持つようになるわけではありません。あなたはあなたのエラーメッセージを読んでいませんでしたか? –

+0

これはすべて既にクラスモジュールではなくモジュール内にあります。私はすべてを1つのモジュールで定義し、複数のモジュールでは定義しません。 –

+1

自分自身にこの制約を課すことで、あなたは傷ついた世界にあなた自身を開きます –

答えて

0

したがって、UDTは宣言されているモジュール内でのみ使用できます。つまり、あるモジュールでUDTを宣言した可能性があります。別のモジュールの関数がUDTを使用しようとするとエラーが生成されます...

あなたの質問に基づいて、UDTに似ているカスタムクラスを探していますが、プロジェクト全体で使用でき、探しているような関数との間でパラメータとして渡すこともできます。

・ホープ、このhelps- TheSilkCode

関連する問題