1

在 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

如何声明一个可以欢迎任何这些类型的数组?

非常感谢 !皮瑞克

4

1 回答 1

2

可以将 UDT 放入 type 的数组中Variant,但前提是 UDT 在公共类模块中定义。

公共类模块只能在其中一种 ActiveX 项目类型中定义。因此,首先,如果您的项目是“标准 EXE”类型,请从项目属性对话框中将其更改为“ActiveX EXE”,并将启动模式更改为“独立”而不是“ActiveX 组件”。(或者,添加一个 ActiveX DLL/Control 项目并从主项目中引用它。)

然后将一个类模块添加到项目中,并将其“实例化”属性设置为“1 - 私有”以外的任何值。将您的 UDT 定义移动到此类模块中。

现在您可以将 UDT 放入任何类型的数组中Variant

另一种方法是将您的类型作为类模块而不是 UDT。这不需要 ActiveX 项目类型,因此它也可以从 VBA 或 VB6 学习版中使用。在这种情况下,您将拥有 3 个类模块,每个 UDT 一个。删除Public Type ...andEnd Type并将类型的Public字段作为类模块的字段。由于这些将是Objects,因此它们对 UDT 的处理非常不同。它们将Set用于分配和New创建实例(例如,Set c1 = New Country)。分配将分配对象而不克隆它们。在这种情况下,数组类型将是Object.

于 2013-10-21T17:55:44.383 回答