VBA将对象传递给另一个对象集合

我有一套业主,每个业主都有各自的机会。

我有两个类模块,具有一堆属性的ClmOpportunity和具有单个名称属性的ClmOwner和存储ClmOpportunity对象的Collection:

Public name As Variant Private opps As New collection Public Function addOpportunity(opp As ClmOpportunity) opp.ID = opps.Count + 1 opps.Add opp, opps.Count + 1 End Function 

这些所有者对象也被存储在我的主模块的集合中。 当我尝试使用addOpportunity函数时,如下所示:

 Dim item As New ClmOpportunity item.name = "test" owners.item(overallOwner).addOpportunity (item) 

我得到的错误:

“对象不支持这个属性或方法”

我对VBA很新,我不明白这是为什么,我正在通过一个ClmOpportunity,所以它应该没问题吧?

任何帮助将不胜感激!

如果没有返回值,则不使用括号。

 owners.item(overallOwner).addOpportunity item 

…然后你会得到一个“types不匹配”的错误,因为集合期望一个string值作为一个键,所以你需要调整你的addOpportunity函数(如果你不打算添加一个返回值)