2013-10-21 55 views
1

在VB6中,我試圖創建一個未定義的UDT數組。我解釋一下自己。 讓我們想象一下我有3個UDT:未定義的UDT數組

Public Type Country 
    Countryproperty1 as String 
    Countryproperty2 as Date 
End type 

Public type City 
    Cityproperty1 as String 
    Cityproperty2 as Date 
End type 

Public type Street 
    Streetproperty as string 
    Streetproperty as date 
End type 

我如何聲明一個數組,可以歡迎任何這些類型的?

非常感謝! Pierrick

回答

2

可以將UDT放入類型爲Variant的數組中,但前提是UDT必須在公共類模塊中定義。

公共類模塊只能在其中一個ActiveX項目類型中定義。因此,首先,如果您的項目是「Standard EXE」類型,請從項目屬性對話框中將其更改爲「ActiveX EXE」,並將啓動模式更改爲「獨立」而非「ActiveX組件」。 (或者,添加一個ActiveX DLL/Control項目,並從主項目中引用它。)

然後向該項目添加一個Class Module,並將其「Instancing」屬性設置爲除「1 - Private」之外的任何其他值。將您的UDT定義移動到此類模塊中。

現在您可以將您的UDT放入任何類型的Variant陣列中。

另一種方法是將您的類型做爲類模塊而不是UDT。這不需要ActiveX項目類型,因此它也可以從VBA或VB6的學習版中使用。在這種情況下,您將有3個類模塊,每個UDT一個。刪除Public Type ...End Type,並將類型字段放置爲類模塊的Public字段。由於這些將是Object s,它們對UDT的處理有很大的不同。他們將使用Set進行分配,並使用New來創建實例(例如,Set c1 = New Country)。分配將分配對象而不克隆它們。在這種情況下陣列類型將是Object

+0

謝謝你的回答Boann。 – arnaultp