VBA将对象传递到另一个对象集合中

Ste*_*ven 1 collections excel vba module class

我有一组业主,他们每个人都有自己的机会.

我有两个类模块,ClmOpportunity有一堆属性,ClmOwner有一个name属性和一个Collection存储ClmOpportunity对象:

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
Run Code Online (Sandbox Code Playgroud)

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

Dim item As New ClmOpportunity

item.name = "test"

owners.item(overallOwner).addOpportunity (item)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

"对象不支持此属性或方法"

我对VBA很陌生,我不明白为什么会这样,我正在传递一个ClmOpportunity,所以应该没问题吧?

任何帮助将不胜感激!

Tim*_*ams 6

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

owners.item(overallOwner).addOpportunity item
Run Code Online (Sandbox Code Playgroud)

...然后你会得到一个"类型不匹配"错误,因为一个集合需要一个字符串值作为一个键,所以你需要调整你的addOpportunity函数(如果你不打算添加一个返回值,那么它应该是一个Sub值)