Hallo liebe Community,
ich verzweifele gerade an folgendem Code.
Der Code erzeigt eine Liste von dictionaries, welche jeweils genau einen key haben, und als value wiederum eine Liste von Strings. Wenn Gast "Heinz" hinzugefügt wird, dann resultiert dies in:
Schlüssel: Oklahoma; Wert: Collection: Günther, Heinz
Schlüssel: Manchester; Wert: Collection: Günther, Heinz
Was ich allerdings erwartet hätte ist:
Schlüssel: Oklahoma; Wert: Collection: Günther, Heinz
Schlüssel: Manchester; Wert: Collection: Günther
Warum erwarte ich das? Weil ja (nach meinem Verständnis) nur dann zugefügt wird, wenn key = uebergabepunkt. Warum wird Heinz aber auch bei Manchester zugefügt, obwohl Oklahoma uebergabepunkt ist? Vermutlich habe ich ein Verständnisproblem.
Viele Grüße
Daniel
Sub FahrtenplanErstellung()
Dim route As Collection
Set route = New Collection
Dim gaesteliste As Collection
Set gaesteliste = New Collection
Dim zwischenstation As Object
Dim key As Variant
Dim gastName As String
Dim hotel As String
Dim uebergabepunkt As String
'1. Punkt
uebergabepunkt = "Oklahoma"
gaesteliste.Add "Günther"
Set zwischenstation = CreateObject("Scripting.Dictionary")
zwischenstation.Add uebergabepunkt, gaesteliste
route.Add zwischenstation
'2. Punkt
uebergabepunkt = "Manchester"
Set zwischenstation = CreateObject("Scripting.Dictionary")
zwischenstation.Add uebergabepunkt, gaesteliste
route.Add zwischenstation
'Neuer Gast
uebergabepunkt = "Oklahoma"
gastName = "Heinz"
For Each zwischenstation In route
For Each key In zwischenstation.Keys
If key = uebergabepunkt Then
Set gaesteliste = zwischenstation(key)
gaesteliste.Add gastName
Set zwischenstation(key) = gaesteliste
Exit For
End If
Next key
PrintDictionaryContents zwischenstation
Next zwischenstation
End Sub
Sub PrintDictionaryContents(dict As Object)
Dim key As Variant
If TypeName(dict) = "Dictionary" Then
For Each key In dict.Keys
Debug.Print "Schlüssel: " & key & "; Wert: " & ValueToString(dict(key))
Next key
Else
Debug.Print "Das übergebene Objekt ist kein Dictionary."
End If
End Sub
|