VBA:将类项添加到类

时间:2016-07-05 04:56:16

标签: vba class collections

我试图创建一个树(实际上是一种复合模式),但我不能将创建的类的项添加到父项中的项集合中。

在课堂内

Private pChildList As Collection

Private Sub Class_Initialize()
    Set pChildList = New Collection
End Sub

Public Property Set ChildList(Value As CProduct)
    pChildList.Add Value
End Property

Public Property Get ChildList() As Collection
    ChildList = pChildList
End Property

主要功能调用

Set Pro = New CProduct
Set Child = New CProduct
Pro.ChildList.Add Child

因此结果应该是在其pChildList集合中具有Child的父(Pro),但是我只得到错误" Argument不是可选的"。

非常感谢提前!

1 个答案:

答案 0 :(得分:3)

您在属性中缺少Set获取定义。 Collection是一个对象,您需要使用Set关键字将其影响到变量。

Public Property Get ChildList() As Collection
    Set ChildList = pChildList
End Property

在您评论后补充我的答案:

Property Set适用于对象,Property Let适用于基本类型。这两个属性通常用于更改成员变量的值(并且预期会这样做),即访问变量以进行写入,但您可以在代码中执行任何操作。 Property Get通常用于返回成员变量的值(但是再一次,您可以在代码中执行任何操作),即访问变量以进行读取。 由于没有理由改变pChildList本身,我会完全放弃Property Set。 您还可以决定完全隐藏成员变量并使用成员函数添加和删除Childs,例如:

Public Sub AddChild(vValue as CProduct)
    pChildList.Add vValue
End Sub