VBA: Dictionary / HashMap / assoziatives Array erstellen

Aufgabenstellung

Wenn es nicht möglich ist, Werte nach einem fortlaufendem Index (Ordinalskala) zu klassifizieren, da keine wirklich logische Reihenfolge existiert, kann man auf assoziative Array/HashMaps oder Dictionaries (synonyme Bezeichnung für nominell skalierte Merkmale) zurückgreifen. Dies ist in der Regel aussagekräftiger als ein Index. Diese Datenstruktur bietet beim Zugriff auf ein Element eine sehr hohe Performance. Bei einem Index müßte man alle Elemente der Datenstruktur durchlaufen um einen geeigneten Schlüssel zu finden.

Ansatz

Da VBA nativ keine solche Datenstruktur besítzt, wird auf Microsoft Scripting Runtime Object Library (scrrun.dll) zugegriffen.

Vorraussetzungen

Die DLL Datei hierfür wird automatisch ab Office 2000 mitinstalliert. Im VBA Editor muss unter „Tools -> Verweise/References“ die Microsoft Scripting Runtime option angehakt werden.

Lösung

   Dim dictio As Object
   Dim dictioItem As Variant
    
   Set dictio = CreateObject("scripting.dictionary")
   dictio.Add "key1", "value1"
   dictio("key2") = "value2"
   dictio("key3") = "value3"

   MsgBox "-" & dictio("gibtsnich") & "-"
   Dim i As Integer
   i = 1
   For Each dictioItem In dictio
      If dictio(dictioItem) = "" Then Cells(i, 14).Value = "ich sagte das gibts nich"
      Cells(i, 12).Value = dictioItem
      Cells(i, 13).Value = dictio(dictioItem)
      i = i + 1
   Next

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.