Thema Datum  Von Nutzer Rating
Antwort
Rot Liste von dictionaries in zwei Schleifen durchlaufen
10.01.2024 20:30:06 Daniel
NotSolved
10.01.2024 22:50:23 xlKing
NotSolved
11.01.2024 08:10:20 Daniel
NotSolved
11.01.2024 20:19:50 xlKing
Solved
17.01.2024 17:09:00 Daniel
NotSolved
11.01.2024 07:56:41 Mase
NotSolved
11.01.2024 08:05:00 Daniel
NotSolved
11.01.2024 15:22:50 Mase
NotSolved
11.01.2024 16:21:23 Daniel
NotSolved
11.01.2024 20:26:38 Mase
Solved
11.01.2024 20:43:02 Daniel
NotSolved
11.01.2024 17:19:52 Gast8231
NotSolved
11.01.2024 20:07:08 Daniel
NotSolved
12.01.2024 06:08:31 Gast32600
Solved
17.01.2024 21:43:22 Daniel
NotSolved

Ansicht des Beitrags:
Von:
Daniel
Datum:
10.01.2024 20:30:06
Views:
509
Rating: Antwort:
  Ja
Thema:
Liste von dictionaries in zwei Schleifen durchlaufen

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

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Liste von dictionaries in zwei Schleifen durchlaufen
10.01.2024 20:30:06 Daniel
NotSolved
10.01.2024 22:50:23 xlKing
NotSolved
11.01.2024 08:10:20 Daniel
NotSolved
11.01.2024 20:19:50 xlKing
Solved
17.01.2024 17:09:00 Daniel
NotSolved
11.01.2024 07:56:41 Mase
NotSolved
11.01.2024 08:05:00 Daniel
NotSolved
11.01.2024 15:22:50 Mase
NotSolved
11.01.2024 16:21:23 Daniel
NotSolved
11.01.2024 20:26:38 Mase
Solved
11.01.2024 20:43:02 Daniel
NotSolved
11.01.2024 17:19:52 Gast8231
NotSolved
11.01.2024 20:07:08 Daniel
NotSolved
12.01.2024 06:08:31 Gast32600
Solved
17.01.2024 21:43:22 Daniel
NotSolved