VBA-Wörterbuchobjekte

Verwenden eines VBA-Wörterbuchs

Ein VBA-Wörterbuch funktioniert ähnlich wie ein Sammlungsobjekt, hat jedoch mehr Eigenschaften und Methoden und bietet mehr Flexibilität

Das Wörterbuch speichert die Daten im Speicher und kann leicht manipuliert werden. Es sind keine automatische Berechnung, Hintergrundsicherung und Bildschirmaktualisierung erforderlich, sodass Ihr Code erheblich schneller ausgeführt wird.

Das Dictionary-Objekt funktioniert ähnlich wie ein normales Wörterbuch, das Sie verwenden würden, wenn Sie die Bedeutung eines Wortes herausfinden möchten. Jeder Eintrag im Dictionary-Objekt hat einen ‚Schlüssel‘-Wert und einen ‚Element‘-Wert. Sie verwenden den Schlüsselwert 'Schlüssel', um den Elementwert im Wörterbuchobjekt zu suchen, ähnlich wie bei einem herkömmlichen Wörterbuch.

Aufgrund der Funktionsweise des Dictionary-Objekts müssen die Schlüsselwerte alle eindeutig sein, genau wie in einem herkömmlichen Dictionary. Stellen Sie sich vor, Sie öffnen Ihr herkömmliches Wörterbuch, um die Bedeutung eines Wortes nachzuschlagen, und finden das Wort mehr als einmal mit zwei völlig unterschiedlichen Definitionen aufgeführt. Sie wären sehr verwirrt!

Schlüsselwerte sind normalerweise Text oder Zahlen oder beides. Benutzer finden es oft einfacher, sich Namen von Tasten als Text zu merken und nicht nur als Zahlen.

Im Vergleich zu einem Sammlungsobjekt ist das Sammlungsobjekt schreibgeschützt. Es hat nur zwei Methoden (Add und Remove) und zwei Eigenschaften (Count und Item). Sobald ein Element zu einem Sammlungsobjekt hinzugefügt wurde, kann es nur entfernt, aber nicht bearbeitet werden, was ein umständliches Verfahren ist, wenn der Wert eines Elements geändert werden muss.

Die Größe eines Wörterbuchobjekts wird automatisch an die Anzahl der darin enthaltenen Elemente angepasst. Es muss nicht in der Größe definiert werden, wie bei einem herkömmlichen Array

Das Dictionary-Objekt ist eindimensional und der Datentyp ist „Variant“, sodass jeder beliebige Datentyp darin eingegeben werden kann, z. numerisch, Text, Datum

Das VBA-Wörterbuch ist nicht nativ in Excel und muss beim Definieren des Wörterbuchobjekts entweder durch frühes oder spätes Binden aufgerufen werden

123 Unter EarlyBindingExample()Dim MyDictionary als neues Scripting.DictionaryEnd Sub
1234 Sub LateBindingExample()MyDictionary als Objekt dimmenSet MyDictionary = CreateObject("Scripting.Dictionary")End Sub

Wenn Sie die frühe Bindung verwenden, müssen Sie einen Verweis auf die Bibliothek „Microsoft Scripting Runtime“ hinzufügen

Sie tun dies, indem Sie ‘Extras | . auswählen Referenzen“ in der Menüleiste des Visual Basic Editor (VBE)-Fensters und ein Popup-Fenster mit einer Liste der verfügbaren Bibliotheken wird angezeigt.

Scrollen Sie nach unten zu „Microsoft Scripting Runtime“ und aktivieren Sie das Kästchen daneben. Klicken Sie auf OK und diese Bibliothek ist jetzt Teil Ihres VBA-Projekts und kann mithilfe der frühen Bindung referenziert werden. Alle Codebeispiele in diesem Artikel verwenden die frühe Bindung.

Ihr Code wird mit frühem Binden erheblich schneller ausgeführt, da alles im Voraus kompiliert wird. Beim Late Binding muss das Objekt während der Codeausführung kompiliert werden

Die Scripting Runtime-Bibliothek verfügt über „Intellisense“. Während Sie Ihren Code schreiben, werden Listen mit verfügbaren Methoden und Eigenschaften angezeigt, die dazu beitragen, Rechtschreibfehler zu vermeiden, die zu Fehlern in Ihrem Programm führen können

Wenn Sie in der VBE F2 drücken und die Bibliothek „Scripting“ auswählen, sehen Sie alle verfügbaren Methoden und Eigenschaften sowie die dafür erforderlichen Parameter

Verteilen Ihrer Excel-Anwendung, die ein Wörterbuch enthält

Wie bereits erwähnt, ist die Scripting Runtime-Bibliothek nicht Teil von Excel VBA. Wenn Sie Ihre Anwendung an andere Benutzer verteilen, müssen diese also auf ihrem Computer Zugriff auf die Scripting Runtime-Bibliothek haben. Ist dies nicht der Fall, tritt ein Fehler auf.

Es ist eine gute Idee, VBA-Code einzufügen, um zu überprüfen, ob diese Bibliothek vorhanden ist, wenn Ihre Excel-Anwendung geladen wird. Sie können dies mit dem Befehl „Dir“ beim Ereignis „Arbeitsmappe öffnen“ tun

Der Speicherort der Datei ist C:\Windows\SysWOW64\scrrun.dll

Umfang eines Dictionary-Objekts

Das Dictionary-Objekt ist nur verfügbar, während die Excel-Arbeitsmappe geöffnet ist. Es wird nicht gespeichert, wenn die Arbeitsmappe gespeichert wird.

Wenn Ihr Wörterbuch allen Routinen in Ihrem Modul zur Verfügung stehen soll, müssen Sie es im Abschnitt Deklarieren ganz oben im Modul deklarieren (Dim).

Sie definieren es als globales Objekt, wenn Ihr Wörterbuch im gesamten Code verwendet werden soll.

1 Global MyDictionary als neues Wörterbuch

Ausfüllen und Lesen aus Ihrem Wörterbuch

Zunächst müssen Sie ein Wörterbuch erstellen, es mit einigen Daten füllen und es dann durchlaufen, um zu beweisen, dass die Daten vorhanden sind

1234567891011 Unter PopulateReadDictionary()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.Add "MyItem1", 10MyDictionary.Add "MyItem2", 20MyDictionary.Add "MyItem3", 30Für n = 0 Zu MyDictionary.Count - 1MsgBox MyDictionary.Keys(n) & " " & MyDictionary.Items(n)Nächste NrEnd Sub

Dieser Code erstellt ein neues Wörterbuchobjekt namens „MyDictionary“ und füllt es dann mit drei Elementen. Die Add-Methode hat zwei Parameter - Key und Item, und beide sind erforderlich

Die Datentypen für Key und Item sind beide Varianten, sodass sie alle Arten von Daten akzeptieren - numerisch, Text, Datum usw

Das erste Element im Wörterbuch könnte hinzugefügt werden als:

1 MyDictionary.Add 10, "MyItem1"

Die Werte zwischen Key und Item wurden vertauscht, aber dies würde immer noch funktionieren, obwohl der Suchschlüssel jetzt 10 wäre.

Es ist jedoch wichtig zu verstehen, dass der Schlüsselwert der Nachschlagewert im Wörterbuch ist. Es funktioniert sehr ähnlich wie die SVERWEIS-Funktion in Excel. Da alle Schlüssel eindeutige Werte haben müssen, können Sie einen Schlüsselwert angeben und sofort den Elementwert für diesen Schlüssel zurückgeben.

Beachten Sie, dass der Wörterbuchindex bei 0 beginnt, sodass Sie 1 von der Wörterbuchanzahl abziehen müssen, die in der For… Next-Schleife verwendet wird

Sie können auch eine For… Each-Schleife verwenden, um die Werte im Wörterbuch zu lesen:

1234567891011 Unter PopulateReadDictionary()Dim MyDictionary As New Scripting.Dictionary, I As VariantMyDictionary.Add "MyItem1", 10MyDictionary.Add "MyItem2", 20MyDictionary.Add "MyItem3", 30Für jedes I In MyDictionary.KeysMsgBox I & " " & MyDictionary(I)Als nächstesEnd Sub

Dieser Code durchläuft jeden Artikel und zeigt den Artikelschlüssel und den Artikelwert an

Verwenden der Artikelindexnummer

Sie können die Indexnummer eines Schlüssels oder Elements verwenden, um den Wert zu lesen

123456789101112 SubindexZahlen()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.CompareMode = TextCompareMyDictionary.Add "Item1", 10MyDictionary.Add "Item2", 20MyDictionary.Add "Item3", 30MsgBox MyDictionary.Keys(2)MsgBox MyDictionary.Items(1)End Sub

Dieser Code gibt den Schlüssel 'item3' zurück, da der Index bei 0 beginnt, und den Artikelwert 20

Sie können auf einzelne Schlüssel- oder Elementwerte innerhalb der Keys- oder Items-Auflistungen verweisen, indem Sie die Indexnummern verwenden.

Filtern des Wörterbuchs

Es gibt keine direkte Methode dafür, aber es ist ziemlich einfach, Code dafür zu schreiben:

1234567891011 Unter FilterDictionary()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.Add "AAItem1", 10MyDictionary.Add "BBItem2", 20MyDictionary.Add "BBItem3", 30Für jeden I In-Filter (MyDictionary.Keys, "BB")MsgBox MyDictionary.Item(I)Als nächstesEnd Sub

Der Filterwert funktioniert nur am Anfang des Schlüsselwerts. Sie können im Filter keine Platzhalter verwenden. Dieser Code gibt die beiden Elementwerte mit Schlüsselnamen zurück, die mit 'BB' beginnen.

Dadurch erhalten Sie basierend auf Ihrem Filterwert eine Teilmenge des Wörterbuchs, die Sie dann in ein anderes Wörterbuch oder ein Arbeitsblatt übertragen können. Wenn Sie die Schlüsselnamen sorgfältig planen und sicherstellen, dass jedem ein sinnvolles Präfix vorangestellt ist, können Sie das Wörterbuch leicht in verschiedene Bestandteile aufteilen.

Ändern eines Elementwerts eines Schlüssels

Das Dictionary-Objekt hat gegenüber einer Collection den großen Vorteil, dass der Item-Wert z.B.

1 MyDictionary("MyItem4") = "40"

In der Sammlung müssten Sie diesen Eintrag löschen und dann neu erstellen.

Hier ist ein Codebeispiel:

12345678910111213 Unter PopulateReadDictionary()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.Add "MyItem1", 10MyDictionary.Add "MyItem2", 20MyDictionary.Add "MyItem3", 30MyDictionary("MyItem2") = "25"MyDictionary("MyItem4") = "40"Für n = 0 Zu MyDictionary.Count - 1MsgBox MyDictionary.Keys(n) & " " & MyDictionary.Items(n)Nächste NrEnd Sub

Der obige Code richtet drei Elemente im Wörterbuch ein und ändert dann den Wert von "MyItem2" von 20 auf 25.

Es ändert auch den Wert von ‚MyItem4‘ auf 40. Beachten Sie, dass in den add-Anweisungen des Codes kein ‚MyItem4‘ hinzugefügt wurde. Wenn Sie den Wert eines nicht vorhandenen Schlüssels ändern, wird er automatisch erstellt. Dies ist äußerst praktisch, da kein Fehler ausgelöst wird, aber es bedeutet, dass Sie mit Ihren Tastennamen vorsichtig sein müssen. Ein versehentlicher Rechtschreibfehler im Schlüsselnamen würde bedeuten, dass ein neuer Schlüssel erstellt wird und der ursprüngliche Schlüsselname immer noch den alten Wert hat.

Dies kann leicht zu Integritätsproblemen im Dictionary-Objekt führen.

Testen Sie, ob ein Schlüssel vorhanden ist

Sie können überprüfen, ob ein Schlüsselwert im Wörterbuch vorhanden ist

123456789 Unter CheckExistsDictionary()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.Add "MyItem1", 10MyDictionary.Add "MyItem2", 20MyDictionary.Add "MyItem3", 30MsgBox MyDictionary.Exists("MyItem8")End Sub

Der Code fügt einem neuen Wörterbuchobjekt drei Elemente hinzu und prüft dann auf einen Schlüssel ('MyItem8'), der sich nicht im Wörterbuch befindet. Dies gibt False zurück, aber wenn einer der vorhandenen Schlüssel verwendet wurde, würde er True zurückgeben

Wildcards werden nicht akzeptiert. Beim Suchtext wird standardmäßig auch zwischen Groß- und Kleinschreibung unterschieden, dies kann jedoch geändert werden (siehe später im Artikel).

Verwenden mehrerer Werte in einem Wörterbuch

Im Gegensatz zu einem Array ist das Dictionary-Objekt nur eindimensional. Dies kann zu Problemen führen, wenn Sie mehrere Werte haben, die Sie einem Schlüssel zuordnen möchten.

Eine Möglichkeit, dies zu umgehen, besteht darin, jeden Elementwert mit einem Trennzeichen zwischen jedem Wert zu verketten, z. '|'

12345678910111213141516171819202122232425262728293031323334 Sub MultipleValues()'Wörterbuchobjekt und Variablen erstellenDim MyDictionary As New Scripting.Dictionary, V1 As Integer, V2 As StringDim V3 als Datum, Temp als String, N als Integer'3 Variablen ausfüllen, um mehrere Werte zu demonstrierenV1 = 5V2 = "Beispiel für mehrere Werte"V3 = "22. Juli 2020"'Füge den verketteten Wert mit "|" zum Wörterbuch hinzu. TrennzeichenMyDictionary.Add "MyMultipleItem", V1 & "|" & V2 & "|" & V3 & "|"'Erfassen Sie den verketteten Wörterbuchwert aus dem Wörterbuch in eine VariableTemp = MyDictionary("MyMultipleItem")'Durch die verkettete Zeichenfolge iterieren, um die einzelnen Werte zu trennenTun'Finden Sie die Position eines TrennzeichensN = InStr(Temp, "|")'Wenn keine Trennzeichen mehr vorhanden sind, wird die Do-Schleife verlassenWenn N = 0, dann Beenden Do'Text relativ zur Position des gefundenen Trennzeichens anzeigenMsgBox links(Temp, N - 1)'Kürzt die verkettete Zeichenfolge auf das nächste Zeichen nach dem gefundenen Trennzeichen abTemp = Mittel (Temp, N + 1)SchleifeEnd Sub

Eine andere Möglichkeit, dieses Problem zu umgehen, besteht darin, Ihr eigenes Subskriptionssystem für Schlüsselnamen zu entwerfen. Es gibt keinen Grund, warum Sie in Tastennamen keine Klammern und Zahlen verwenden sollten

1234567891011 Sub MultipleValues()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.Add "Multiple(1)", 5MyDictionary.Add "Multiple(2)", "Beispiel für mehrere Werte"MyDictionary.Add "Multiple(3)", "22-Jul-2020"Für N = 1 bis 3MsgBox MyDictionary("Multiple(" & N & ")")Nächste NEnd Sub

Dieser Code fügt dem Wörterbuch drei Schlüssel hinzu, aber jeder Schlüsselname enthält eine Indexnummer in Klammern. Sie können dann auf den Schlüsselnamen verweisen, jedoch mit der verketteten Subskriptnummer. Dies ist der Verwendung eines Array-Objekts sehr ähnlich

Elemente löschen

Sie können einzelne Elemente anhand des Schlüsselwerts entfernen

1 MyDictionary.Remove („MyItem2“)

Beachten Sie, dass, da Schlüsselnamen eindeutig sind, dies nur diesen einen bestimmten Schlüssel- und Elementwert entfernt

Sie können das Wörterbuch auch vollständig löschen

1 MyDictionary.RemoveAll

Hier ist ein Beispiel für die Verwendung von "Entfernen" in VBA:

12345678910111213141516 Sub RemoveValues()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.Add "Item1", 10MyDictionary.Add "Item2", 20MyDictionary.Add "Item3", 30MyDictionary.Remove ("Element2")Für N = 0 To MyDictionary.Count - 1MsgBox MyDictionary.Keys(N) & " " & MyDictionary.Items(N)Nächste NMyDictionary.RemoveAllMsgBox MyDictionary.CountEnd Sub

Der Code fügt dem Wörterbuch drei Elemente hinzu und entfernt dann "Element2". Anschließend durchläuft es das Wörterbuch, um zu beweisen, dass „Item2“ nicht mehr existiert

Schließlich entfernt der Code alle Elemente aus dem Wörterbuch und zeigt die Wörterbuchanzahl an, die jetzt null ist.

Ändern der Groß-/Kleinschreibung für Suchanfragen

Wenn Sie nach einem Schlüssel suchen, wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden. Sie können dies jedoch mit der Eigenschaft „CompareMode“ ändern.

Beachten Sie, dass dies sofort im Code erfolgen muss, nachdem Sie das Wörterbuchobjekt erstellt haben, jedoch bevor Sie dem Wörterbuch Daten hinzufügen. Nachdem der Vergleichsmodus eingestellt wurde, kann er innerhalb dieses Wörterbuchs nicht mehr geändert werden.

12345678910 Sub ChangeCaseSensitivity()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.CompareMode = TextCompareMyDictionary.Add "Item1", 10MyDictionary.Add "Item2", 20MyDictionary.Add "Item3", 30MsgBox MyDictionary.Exists("item2")End Sub

In diesem Beispiel ist der Vergleichsmodus auf „TextCompare“ eingestellt, was bedeutet, dass die Groß-/Kleinschreibung nicht beachtet wird. Die 'Exists'-Anweisung am Ende des Beispiels gibt True zurück, obwohl der Suchtext nur in Kleinbuchstaben geschrieben ist.

In Excel gibt es nur zwei Werte, die für den Vergleichsmodus verwendet werden können. Beim Binärvergleich wird die Groß-/Kleinschreibung beachtet und beim Textvergleich wird die Groß-/Kleinschreibung nicht beachtet

Wenn Sie den Vergleichsmodus auf Binärvergleich eingestellt haben, müssen Sie bei der Benennung Ihrer Schlüssel vorsichtig sein. Wenn Sie einen Namen mit einem Großbuchstaben als erstes Zeichen festlegen, müssen Sie beim Ändern des Werts darauf achten, dass das erste Zeichen weiterhin groß geschrieben wird. Wenn Sie mit einem Kleinbuchstaben beginnen, wird dies als neuer Schlüssel interpretiert und kann leicht zu Verwirrung und Fehlern in Ihrem Wörterbuch führen

Denken Sie daran, dass ein neuer Schlüssel und Wert zum Wörterbuch hinzugefügt werden, wenn Sie einen Wert für einen Schlüssel ändern und der Schlüsselname aufgrund eines Binärvergleichs nicht vorhanden ist.

Wenn Sie stattdessen Textvergleich verwenden, werden alle Wertänderungen unabhängig von der Groß-/Kleinschreibung an den Schlüssel übertragen. Wenn Sie versuchen, das gleiche Element hinzuzufügen, aber mit einem anderen Groß-/Kleinschreibung geschrieben, erhalten Sie eine Fehlermeldung, da es bereits existiert.

Sortieren des Wörterbuchs

Wie beim Sammlungsobjekt gibt es keine Methode zum Sortieren des Wörterbuchs, weder anhand von Schlüsseln oder Elementwerten.

Da sich der VBA-Code jedoch in einer Excel-Arbeitsmappe befindet, können die Wörterbuchdaten in Tabellenform in Excel übertragen und dann die Excel-Sortierfunktion darauf angewendet werden. Das Wörterbuch kann dann mit „RemoveAll“ gelöscht und die sortierten Werte aus dem Arbeitsblatt hinzugefügt werden.

Dieser Code sortiert sowohl die Schlüssel als auch die Artikelwerte

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 UntersortMeinDictionary()Dim MyDictionary als neues WörterbuchZähler so lang dimmen'Wörterbuch mit zufälligen Reihenfolgeelementen erstellenMyDictionary.Add "Item5", 5MyDictionary.Add "Item2", 15MyDictionary.Add "Item4", 11MyDictionary.Add "Item1", 2MyDictionary.Add "Item3", 19'Erfassen Sie die Anzahl der Elemente im Wörterbuch für die zukünftige VerwendungZähler = MyDictionary.Count'Durch das Wörterbuch iterieren und jeden Schlüssel und jedes Element in eine aufeinanderfolgende Zelle auf 'Blatt1' kopieren (Spalte A)Für N = 0 To MyDictionary.Count - 1Sheets("Sheet1").Cells(N + 1, 1) = MyDictionary.Keys(N)Sheets("Sheet1").Cells(N + 1, 2) = MyDictionary.Items(N)Nächste N'Aktivieren Sie das Blatt1 und verwenden Sie die Excel-Sortierroutine, um die Daten in aufsteigender Reihenfolge zu sortierenSheets("Sheet1").AktivierenRange("A1:B" & MyDictionary.Count).AuswählenActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.ClearActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range(_"A1:A5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _xlSortNormalMit ActiveWorkbook.Worksheets("Sheet1").Sort.SetRange Range("A1:A5").Header = xlGuess.MatchCase = Falsch.Orientierung = xlTopToBottom.SortMethod = xlPinYin.AnwendenEnde mit'Alle Einträge aus dem Wörterbuch löschenMyDictionary.RemoveAll'Kopieren Sie die Zellenwerte zurück in das leere Wörterbuchobjekt mit dem gespeicherten Wert (Zähler) für die 'Schleife'Für N = 1 zum ZählerMyDictionary.Add Sheets("Sheet1").Cells(N, 1).Value, Sheets("Sheet1").Cells(N, 2).ValueNächste N'Durch das Wörterbuch iterieren, um die Reihenfolge zu überprüfen, in der sich die Elemente jetzt befindenFür N = 0 To MyDictionary.Count - 1MsgBox MyDictionary.Keys(N) & " " & MyDictionary.Items(N)Nächste N'Löschen Sie das Arbeitsblatt (Blatt1) - ggf. auch löschenSheets("Sheet1").Range(Cells(1, 1), Cells(Counter, 2)).LöschenEnd Sub

Dieser Code erstellt ein Wörterbuch mit fünf hinzugefügten zufälligen Reihenfolgewerten. Es erfasst die Anzahl der Elemente in einer Variablen und durchläuft dann das Wörterbuch, wobei die Schlüssel- und Elementwerte in separate Spalten auf einem Arbeitsblatt übertragen werden.

Anschließend wird der heruntergeladene Bereich sortiert, wobei Spalte A als Sortierfeld verwendet wird. Das Wörterbuch wird mit der Methode „RemoveAll“ vollständig gelöscht, und der Code durchläuft dann die Zellenwerte im Arbeitsblatt und fügt sie wieder dem Wörterbuch hinzu.

Schließlich durchläuft der Code das Wörterbuch und zeigt die verketteten Schlüssel- und Elementwerte an, um zu beweisen, dass die Sortierung funktioniert hat.

Durch Ändern der Parameter im Sortiercode könnten die Daten nach Artikelwerten sortiert werden.

Kopieren einer Liste von Schlüsseln in ein Arbeitsblatt

Sie können eine Liste aller Schlüsselwerte mit dem folgenden Code in ein Arbeitsblatt kopieren:

12345678910 UnterkopieKeyList()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.CompareMode = TextCompareMyDictionary.Add "Item1", 10MyDictionary.Add "Item2", 20MyDictionary.Add "Item3", 30Sheets("Sheet1").Range("A1").Value = Join(MyDictionary.Keys, vbLf)End Sub

Dies erzeugt das Ergebnis in Ihrem Arbeitsblatt:

Mit diesem Code können Sie ein ganzes Wörterbuch in ein Arbeitsblatt kopieren:

12345678910 Unter CopyIntoWorksheet()Dim MyDictionary als neues Scripting.DictionaryMyDictionary.Add "Item1", 10MyDictionary.Add "Item2", 20MyDictionary.Add "Item3", 30Range("A1").Resize(MyDictionary.Count, 1) = WorksheetFunction.Transpose(MyDictionary.Keys)Range("B1").Resize(MyDictionary.Count, 1) = WorksheetFunction.Transpose(MyDictionary.Items)End Sub

Ihr Arbeitsblatt sieht so aus:

Vergleich eines Wörterbuchs mit einer Sammlung

Das Wörterbuch ist schneller als eine Sammlung.

Eine Collection befindet sich bereits in VBA. Ein Wörterbuch benötigt zum Hinzufügen einen Verweis auf das Microsoft Scripting Dictionary oder ein Objekt, das mit Late Binding erstellt wurde

Ein Collection-Element kann nur einmal geschrieben und mehrmals gelesen werden. In einem Wörterbuch kann der Elementwert geändert werden. Bei einer Sammlung muss das Element entfernt und dann das geänderte Element wieder hinzugefügt werden.

Die Collection arbeitet mit Indexwerten, wobei es schwierig sein kann herauszufinden, welcher Indexwert wo hingehört. Das Wörterbuch arbeitet mit eindeutigen Schlüsselwerten, die verwendet werden, um ein Element zu finden

Das Abrufen eines einzelnen Elements ist in einer großen Sammlung langsamer als in einem Wörterbuch

In einer Collection werden die Schlüssel nur zum Nachschlagen von Daten verwendet und sind nicht abrufbar. In einem Wörterbuch können Schlüssel auf Existenz getestet und zum Auffinden eines bestimmten Elements verwendet werden.

Bei Sammlungen wird die Groß-/Kleinschreibung beachtet und dies kann nicht geändert werden. In einem Wörterbuch kann der Vergleichsmodus so eingestellt werden, dass die Groß-/Kleinschreibung beachtet wird oder die Groß-/Kleinschreibung nicht beachtet wird

In einer Collection müssen die Schlüsselwerte Strings sein. In einem Dictionary können sie jeden Datentyp haben, z.B. numerisch, Datum usw.

Das Entfernen aller Elemente in einer Collection umfasst eine Neudefinition des Collection-Objekts. Dafür gibt es im Dictionary die Methode ‚RemoveAll‘.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave