以下のループでは、それ自体がコレクション内にある別のクラスオブジェクト内のコレクションにクラスオブジェクトを追加します。
Dim opportunity As New ClmOpportunity
opportunity.name = name
owners.item(overallOwner).addOpportunity opportunity
MsgBox opportunity.name
Next i
MsgBox owners("John Smith").opportunities(1).name
最初のメッセージボックスには正しい商談名が表示されますが、2番目のメッセージボックスは、John Smithがコレクションの最初にある場合でも、追加された最後の商談に設定されます。
したがって、所有者が2人いる場合、機会1のジョンスミスと機会2のメアリールーの2番目のメッセージボックスからの出力は、両方のレコードの機会2になります。
しかし、最初のメッセージは予想通り機会1と2になります。
これは、Ownerクラスモジュールのコードです。
Public name As Variant
Public opportunities As New collection
Public Function addOpportunity(opp As ClmOpportunity)
Dim OppID As String
OppID = opportunities.count + 1
opp.ID = OppID
opportunities.Add opp, OppID
End Function