在VB6中,我试图创建一个未定义的UDT数组。我自己解释一下。 我们假设我有3个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
如何声明一个可以欢迎任何这些类型的数组?
非常感谢! 皮埃里克
答案 0 :(得分:2)
可以将UDT放入类型为Variant
的数组中,但前提是UDT是在公共类模块中定义的。
公共类模块只能在其中一个ActiveX项目类型中定义。首先,如果您的项目类型为"标准EXE",请将其更改为" ActiveX EXE"从项目属性对话框中,将启动模式更改为" Standalone"而不是" ActiveX组件"。 (或者,添加ActiveX DLL / Control项目并从主项目中引用它。)
然后将一个类模块添加到项目中,并设置其" Instancing"除了" 1之外的任何财产 - 私人"。将UDT定义移动到此类模块中。
现在,您可以将UDT放入Variant
类型的任何数组中。
另一种方法是将类型作为类模块而不是UDT。这不需要ActiveX项目类型,因此它也可以从VBA或VB6的学习版中使用。在这种情况下,您将拥有3个类模块,每个模块对应一个UDT。移除Public Type ...
和End Type
,并将类型的字段作为类模块的Public
字段。由于这些将是Object
,因此它们对UDT的处理方式非常不同。他们将Set
用于分配,New
用于创建实例(例如Set c1 = New Country
)。赋值将分配对象而不克隆它们。在这种情况下,数组类型为Object
。