Collections of classes in VBA
I don't see the need for the HasManager property. Either a Manager is assigned, or not. It wouldn't make sense for you to set it to True when there isn't one, or False when there is.

Then just change your Print function to check -

If Not emp.Manager Is Nothing Then
    Debug.Print emp.Name &amp; " is managed by " &amp; emp.Manager.Name
 Else
    Debug.Print emp.Name &amp; " has no manager."


If it was easy to overload the class initialization for employee, I'd say make a name value obligatory, but it's really not a simple task in VBA.



These two properties:


Public Property Get Team() As Employee
    Team = pTeam
End Property

Public Property Let Team(Value As Employee)
    pTeam = Value
End Property



Are passing Objects - why not pass Strings given the team information is handled by a string.