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

问题描述:

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

具体而言,这种类型的双数组属性工作正常,一次全部接收或返回一个数组:

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 

但是,当我尝试用型变型的阵列相同的模式,在获取财产收益一个空的/未分配的变量数组:

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()作为Variant在属性中不起作用吗?

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

请注意缺少的括号。

+0

加 - 另一个容易!谢谢。双数组“NumericArray()= p_dbNumericArray() ”的模拟行怎么样,这似乎与额外的parens正常工作?他们在这里可选吗?或者是微妙的事情?再次感谢。 – RomnieEE2 2011-03-17 17:29:46

+0

哎呀。看起来像“NumericArray()= ...”实际上不起作用。我失去了同时编辑太多东西的轨道。所以那些括号完全是错误的。再次感谢。 – RomnieEE2 2011-03-17 17:37:29

+0

@Romnie:是的,parens总是绝对错误的。他们正在调用该函数,但实际上您想分配给它(即设置返回值)。 – Tomalak 2011-03-17 17:43:10