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。