如何将一个对象插入到一个数组中,该数组是用户修改的 class 处的一个字段? VBA
How to insert an object into an array which is a field at a user-modified class? VBA
我有一个 class 包含一对数组。
当我尝试向该数组插入新的一对时,我收到一条错误消息。
为什么会出现该错误,我该如何解决?
'#### The class instance: ####
dim pairsHolder as new ClassArrayOfPairs
pairsHolder.init(5)
'#### The pair instance: ####
dim pair as new ClassPairs
pair.setLeft(4) ... pair.setRight(7) ....
'#### Trying to insert pair to array: ####
Call pairsHolder.insertPairAt (0,pair)
最后一条语句引发错误:
RunTime error 438: Object doesn't support this property or method
这里是 class:
'@@@@@ CLASS ArrayOfPairs @@@@@
'--------------------------------
Private pairArr() As ClassPairs
Private maxPairs As Integer
'##### Initialize Parameters #####
Public Sub init(howManyPairs As Integer)
maxPairs = howManyPairs
ReDim pairArr(maxPairs - 1) As ClassPairs
End Sub
'##### INSERT pair #####
Public Sub insertPairAt(index as Integer, pair As ClassPairs)
pairArr(index) = pair
End Sub
澄清一下,ClassPairs
只是一个带有 Left
和 Right
字段变量的对象。
我可以通过简单地在 pairArr(index) = pair
之前添加 Set
来解决您的问题:
'##### INSERT pair #####
Public Sub insertPairAt(index as Integer, pair As ClassPairs)
Set pairArr(index) = pair
End Sub
您正在设置 pairArr(index) = pair
。 pair
和 pairArr(index)
是对象。因此,您需要将对象引用分配给 pairArr(index)
才能使其成为 pair
并且 Set
用于分配对象引用, msdn reference.
我有一个 class 包含一对数组。
当我尝试向该数组插入新的一对时,我收到一条错误消息。
为什么会出现该错误,我该如何解决?
'#### The class instance: ####
dim pairsHolder as new ClassArrayOfPairs
pairsHolder.init(5)
'#### The pair instance: ####
dim pair as new ClassPairs
pair.setLeft(4) ... pair.setRight(7) ....
'#### Trying to insert pair to array: ####
Call pairsHolder.insertPairAt (0,pair)
最后一条语句引发错误:
RunTime error 438: Object doesn't support this property or method
这里是 class:
'@@@@@ CLASS ArrayOfPairs @@@@@
'--------------------------------
Private pairArr() As ClassPairs
Private maxPairs As Integer
'##### Initialize Parameters #####
Public Sub init(howManyPairs As Integer)
maxPairs = howManyPairs
ReDim pairArr(maxPairs - 1) As ClassPairs
End Sub
'##### INSERT pair #####
Public Sub insertPairAt(index as Integer, pair As ClassPairs)
pairArr(index) = pair
End Sub
澄清一下,ClassPairs
只是一个带有 Left
和 Right
字段变量的对象。
我可以通过简单地在 pairArr(index) = pair
之前添加 Set
来解决您的问题:
'##### INSERT pair #####
Public Sub insertPairAt(index as Integer, pair As ClassPairs)
Set pairArr(index) = pair
End Sub
您正在设置 pairArr(index) = pair
。 pair
和 pairArr(index)
是对象。因此,您需要将对象引用分配给 pairArr(index)
才能使其成为 pair
并且 Set
用于分配对象引用, msdn reference.