我正在尝试创建一个包含数组的类,并且在为其创建类时遇到了问题...
类:
Private pST(0 To 2) As String
Public Property Get ST() As String
ST() = pST()
End Property
Public Property Let ST(value() As String) '<---- ERROR HERE
pST() = value()
End Property
代码运行:
Sub test()
Dim foo As cPurchaseOrder
Set foo = New cPurchaseOrder
foo.ST(0) = "test"
Debug.Print foo.ST(0)
End Sub
错误信息:
编译错误:
相同属性的属性过程定义不一致,或者属性过程具有可选参数、ParamArray 或无效的 Set 最终参数。
问题描述:
如何正确初始化包含数组变量的类?
编辑:关于 Mat's Mug 的回答
类已更改:
Private pST As Variant
Public Property Get STContent(ByVal index As Long) As String
STContent = pST(index)
End Property
Public Property Let STContent(ByVal index As Long, ByVal value As String)
pST(index) = value
End Property
Private Sub Class_Initialize()
ReDim pST(0 To 2)
End Sub
代码运行测试:
Sub test()
Dim foo As cPurchaseOrder
Set foo = New cPurchaseOrder
foo.STContent(0) = "test" '<--- Type mismatch here
Debug.Print foo.STContent(0)
End Sub
Class_Initialize
处理程序中初始化数组,例如ReDim pST(0 To 20)
,然后才能开始对其进行赋值。如果支持字段是编译时数组,则错误将为“索引超出范围”。 - Mathieu GuindonClass_Initialize
,当我只给foo.STContent(0)
赋值时它可以正常工作。但是当我尝试输出该值时,在Public Property Get STContent
中的Content = pST(index)
上没有得到变量未定义
的错误提示。 - MaldredClass
对象还很陌生,还在学习中:( - MaldredOption Explicit
,避免从互联网上随意复制粘贴代码 ;-) 该赋值语句为STContent = pST(index)
。 - Mathieu Guindon