Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将一个对象插入到一个数组中,该数组是用户修改类中的一个字段?VBA_Vba_Excel_Class_Properties_Private - Fatal编程技术网

如何将一个对象插入到一个数组中,该数组是用户修改类中的一个字段?VBA

如何将一个对象插入到一个数组中,该数组是用户修改类中的一个字段?VBA,vba,excel,class,properties,private,Vba,Excel,Class,Properties,Private,我有一个类,它包含一个成对数组 当我尝试向该数组插入新对时,会收到一条错误消息 为什么我会出现这个错误,我该如何解决这个问题 '#### The class instance: #### dim pairsHolder as new ClassArrayOfPairs pairsHolder.init(5) '#### The pair instance: #### dim pair as new ClassPairs pair.setLeft(4) ... pair.set

我有一个类,它包含一个成对数组

当我尝试向该数组插入新对时,会收到一条错误消息

为什么我会出现这个错误,我该如何解决这个问题

'####  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)
最后一条语句引发了一个错误:

运行时错误438:对象不支持此属性或方法

下面是课堂:

'@@@@@  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
字段变量的对象。

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

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

您正在设置
pairar(index)=pair
pair
pairar(index)
是对象。因此,您需要为
pairar(index)
分配一个对象引用,使其成为
pair
,并且
Set
用于分配对象引用。

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

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

第一行代码中是否有输入错误?您的类似乎没有被称为
ClassArrayOfPairs
,但这就是您创建的对象类型?第一行代码中是否有输入错误?您的类似乎没有被称为
ClassArrayOfPairs
,但这就是您创建的对象的类型?兄弟!你现在是我的上帝了:)谢谢你!那个helped@TalKohavy没问题!很高兴我能帮忙!兄弟!你现在是我的上帝了:)谢谢你!那个helped@TalKohavy没问题!很高兴我能帮忙!