如何将一个对象插入到一个数组中,该数组是用户修改的 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 只是一个带有 LeftRight 字段变量的对象。

我可以通过简单地在 pairArr(index) = pair 之前添加 Set 来解决您的问题:

'##### INSERT pair #####
Public Sub insertPairAt(index as Integer, pair As ClassPairs)
    Set pairArr(index) = pair
End Sub

您正在设置 pairArr(index) = pairpairpairArr(index) 是对象。因此,您需要将对象引用分配给 pairArr(index) 才能使其成为 pair 并且 Set 用于分配对象引用, msdn reference.