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