UDT を type の配列に入れることは可能Variant
ですが、UDT がパブリック クラス モジュールで定義されている場合に限られます。
パブリック クラス モジュールは、いずれかの ActiveX プロジェクト タイプでのみ定義できます。まず、プロジェクトのタイプが「標準 EXE」の場合は、プロジェクト プロパティ ダイアログから「ActiveX EXE」に変更し、起動モードを「ActiveX コンポーネント」ではなく「スタンドアロン」に変更します。(または、ActiveX DLL/コントロール プロジェクトを追加し、メイン プロジェクトから参照します。)
次に、クラス モジュールをプロジェクトに追加し、その "Instancing" プロパティを "1 - Private" 以外に設定します。UDT 定義をこのクラス モジュールに移動します。
これで、UDT を type の任意の配列に配置できるようになりますVariant
。
別のアプローチは、型を UDT ではなくクラス モジュールとして実行することです。これは ActiveX プロジェクト タイプを必要としないため、VBA または VB6 の Learning Edition からも使用できます。この場合、UDT ごとに 1 つずつ、合計 3 つのクラス モジュールがあります。Public Type ...
andを削除しEnd Type
、型のPublic
フィールドをクラス モジュールのフィールドとして配置します。これらは であるためObject
、UDT とは非常に異なる処理を行います。Set
割り当てとインスタンスの作成に使用New
します (例: Set c1 = New Country
)。割り当ては、オブジェクトを複製せずに割り当てます。この場合の配列型は になりますObject
。