VBA变量类型的数组作为类属性

时间:2011-03-17 17:13:33

标签: arrays vba properties variant

我有一个处理多个数字数组(类型为double)的类,还需要处理一个描述符数组,这些描述符将包含字符串和整数的混合,需要相应地用作字符串和数字。所以我决定创建一个类型为variant的数组属性(不是包含数组的变体)。但这个似乎不起作用,而类型双数组。

具体来说,这种类型的double array-property工作正常,可以一次接收或返回一个数组:

Private p_dbNumericArray() As Double

Public Property Let NumericArray(Value() As Double)
    p_dbNumericArray() = Value()
End Property
Public Property Get NumericArray() As Double()
    NumericArray() = p_dbNumericArray()
End Property

但是当我使用类型变量数组尝试相同的模式时,Get属性返回一个空/未分配的变量数组:

Private p_vaVariantArray() As Variant

Public Property Let VariantArray(Value() As Variant)
    p_vaVariantArray() = Value()
End Property
Public Property Get VariantArray() As Variant()
    VariantArray() = p_vaVariantArray()
End Property

在变体中包装数组(而不是使用类型变量的数组),当然可以正常工作:

Private p_vaVariantArray As Variant

Public Property Let VariantArray(Value As Variant)
    p_vaVariantArray = Value
End Property
Public Property Get VariantArray() As Variant
    VariantArray = p_vaVariantArray
End Property

但是,对Dim D()As Double起作用的模式是否适用于Dim V()As Variant,属性中是否已知且标准?

1 个答案:

答案 0 :(得分:2)

Public Property Get VariantArray() As Variant()
    VariantArray = p_vaVariantArray()
End Property

请注意缺少的括号。