Erstellen und verwenden ein Dictionary in VBA

Glen Alfaro 30 Januar 2023
  1. Voraussetzungen
  2. Erstellen Sie das Dictionary-Objekt mit VBA
  3. Hinzufügen von Elementen zum Objekt Dictionary mit VBA
  4. Geben Sie einen Wert im Dictionary mit VBA zurück
  5. Ändern Sie einen Wert im Dictionary mit VBA
  6. Zählen Sie das Element im Dictionary mit VBA
  7. Drucken Sie alle Schlüssel und Werte im Dictionary
Erstellen und verwenden ein Dictionary in VBA

Das Objekt Dictionary in VBA hat nichts mit dem Sprachwörterbuch zu tun, das wir verwenden, um die Bedeutung von Wörtern zu kennen.

In VBA ähnelt das Objekt Dictionary dem Objekt Collection beim Speichern von Daten. Der Hauptunterschied besteht darin, dass eine Sammlung Folgendes nicht kann:

  1. Überprüfen Sie, ob sich ein Artikel in der Sammlung befindet
  2. Ändern Sie den Wert eines vorhandenen Artikels

Natürlich können wir weiterhin Collection verwenden und Workarounds für dieses Problem erstellen, aber Dictionary bietet diese Lösungen mit vordefinierten Methoden an. So kann Dictionary für bestimmte Aufgaben nützlich sein, insbesondere beim Abrufen eines bestimmten Elements.

Dieser Artikel zeigt, wie Sie das Objekt Dictionary erstellen und verwenden, um bestimmte Funktionen in Ihrem VBA-Code auszuführen.

Voraussetzungen

Das Dictionary-Objekt wird nicht mit der Standardbibliothek von VBA geliefert. Daher muss vor der vollständigen Verwendung des Objekts Dictionary auf die Bibliothek Microsoft Scripting Runtime einschließlich des Objekts Dictionary verwiesen werden.

  • Excel-Datei öffnen.
  • Öffnen Sie auf der Registerkarte Entwickler den Visual Basic-Editor.
  • Klicken Sie in der Symbolleiste Extras auf Referenzen.
  • Aktivieren Sie das Kontrollkästchen Microsoft Scripting Runtime.

Sie sind jetzt fertig.

Erstellen Sie das Dictionary-Objekt mit VBA

Nachdem sich die Microsoft Scripting Runtime in den Referenzen befindet, zeigt der folgende Codeblock, wie ein Dictionary-Objekt erstellt wird.

Erstellen Sie ein Objekt aus der Bibliothek Scripting.Dictionary und initialisieren Sie es dann als neues Objekt.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

End Sub

Hinzufügen von Elementen zum Objekt Dictionary mit VBA

Syntax:

[DictionaryObject].Add([Key], [Item])

Parameter:

[DictionaryObject] Erforderlich. Der Name des Wörterbuchs
[Key] Erforderlich. Die Daten, mit denen der Artikel im Dictionary referenziert wird.
[Item] Erforderlich. Setzt oder gibt den Wert eines Items im Dictionary zurück

Wir können Elemente zum Dictionary hinzufügen, indem wir den Codeblock früher verwenden. Namen (Glen, Myla, Katrina, Jose) wurden als Schlüssel und ihr jeweiliges Alter als Werte im Codeblock unten hinzugefügt.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add ("Glen", 25)
d.Add ("Myla", 49)
d.Add ("Jose", 58)
d.Add ("Katrina", 18)

End Sub

Geben Sie einen Wert im Dictionary mit VBA zurück

Mit dem Dictionary können wir einen Wert zurückgeben, indem wir den dazugehörigen Schlüssel kennen.

Rückgabesyntax:

[Value] = [DictionaryObject](Key)

Syntax ändern:

[DictionaryObject](Key) = [Value]

Parameter:

[DictionaryObject] Erforderlich. Der Name des Dictionary
[Key] Erforderlich. Die Daten, mit denen der Item im Dictionary referenziert wird.
[Value] Erforderlich. Setzt oder gibt den Wert eines Items im Dictionary zurück

Unter Verwendung der Syntax gab der Wert des Schlüssels Myla 49 zurück.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Debug.Print d("Myla")

End Sub

Ausgabe:

49

Ändern Sie einen Wert im Dictionary mit VBA

Mit dem Dictionary können wir einen Wert ändern, indem wir den dazugehörigen Schlüssel kennen.

Syntax ändern:

[DictionaryObject](Key) = [Value]

Parameter:

[DictionaryObject] Erforderlich. Der Name des Dictionary
[Key] Erforderlich. Die Daten, mit denen der Item im Dictionary referenziert wird
[Value] Erforderlich. Setzt oder gibt den Wert eines Items im Dictionary zurück

Im Codeblock unten wurde der Wert des Schlüssels Myla mit der obigen Syntax von 49 auf 50 geändert.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

d("Myla") = 50

Debug.Print d("Myla")

End Sub

Ausgabe:

50

Zählen Sie das Element im Dictionary mit VBA

Wir können die Anzahl aller Elemente innerhalb des Dictionary mit der Count-Methode zurückgeben.

Count syntax:

[Value]= [DictionaryObject].Count

Parameter:

[DictionaryObject] Erforderlich. Der Name des Dictionary
[Value] Gibt die Anzahl der Einträge im Dictionary zurück

Im folgenden Beispiel erhalten wir den Inhalt des Objekts d mit der Methode Count.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Debug.Print "There are " & d.Count & " items in the Dictionary."

End Sub

Ausgabe:

There are 4 items in the Dictionary.

Drucken Sie alle Schlüssel und Werte im Dictionary

Der folgende Codeblock druckt alle Schlüssel und Werte innerhalb des Dictionary mit einer Schleife.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Dim Key as Variant

For Each Key In d.Keys
    Debug.Print Key, d(Key)
Next

End Sub

Ausgabe:

Glen           25 
Myla           49 
Jose           58 
Katrina        18