Hallo,
so, ich mach noch mal ne Pause und antworte hier, weil ich glaube, mich nicht geschickt ausgedrückt zu haben:
Wenn ich dich richtig verstehe, dann wünscht du dir eine Möglichkeit, dass die Klasse (keine spezielle Instanz) alle deine aktuellen Instanzen kennt und dir eine bestimmte Instanz/Referenz zurückgibt könnte.
Bei dem, was ich jetzt schreibe, bin ich mir nicht 100%ig sicher, ob das stimmt (man möge mich bitte korrigieren, ich lerne gerne dazu!):
Zunächst: du kannst (in VBA) nicht auf Klassen zugreifen, sondern nur auf Instanzen von Klassen.
Für dein Vorgehen müsste es IMHO Klassenvariablen (im Gegensatz zu "Instanzvariablen") geben, auf die man von jeder Instanz aus zugreifen kann (gibt es zum Beispiel in Python). Dort könnte dann jede Instanz ihre Existenz hinterlegen. Da es in VBA aber keine Klassenvariablen gibt, geht das nicht.
Du benötigst also irgendwo ein "Verzeichnis von allen Teams".
Für mich heißt das, du baust entweder deine Klasse "Team" um zu "Teams", oder du "führst eben Buch", indem du alle Teams irgendwo auflistest (Collection, Array, ... meinetwegen auch eine weitere Klasse "clsTeams").
Falls du dich für eine Klasse entscheidest, die alle Teams aufnimmt (anstatt eine Klasse Team), dann hat Isabelle dir hier
http://www.office-loesung.de/ftopic544234_0_0_asc.php
vorgemacht, wie du mit
Attribute Item.VB_UserMemId = 0
eine Standardmethode festlegen kannst, damit du deine Teams mit Namen (Strings) ansprechen kannst:
Sub Bspl()
Dim dasTeam As clsTeams
Dim teams As New clsTeams
Call teams.addTeam("TEam1")
Call teams.addTeam("Team2")
Call teams.addTeam("Team2")
Debug.Print teams("Team1").Name 'TEam1
Set dasTeam = teams("Team2")
Debug.Print dasTeam Is teams("Team2") 'Wahr
End Sub
Grüße, Ulrich
|