VBA-Wörterbuch-Objekte

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on August 3, 2023

In diesem Artikel wird die Verwendung des VBA-Wörterbuch-Objekts erklärt und demonstriert.

VBA ermöglicht es dem Benutzer, Klassenmodule zu erstellen, in denen er Sammelobjekte anlegen kann. Ein VBA-Wörterbuch kann mit einem Sammelobjekt oder Array verglichen werden, da es Informationen im Speicher ablegt, während der VBA-Code ausgeführt wird, und es dem Benutzer ermöglicht, diese Informationen später im Code abzurufen und zu verwenden. Das VBA-Wörterbuch-Objekt ist flexibler als eine Sammlung, da es automatisch in der Größe angepasst werden kann. Außerdem ist es ein variabler Datentyp, so dass beliebige Informationen wie Daten, Zahlen, Text usw. hinzugefügt werden können.

Verwendung des VBA-Wörterbuchs

Das VBA-Wörterbuch kann in anderen Microsoft Office-Programmen wie Word oder PowerPoint verwendet werden. Daher muss der Zugriff auf das Wörterbuch entweder über Frühe Bindung oder Späte Bindung erfolgen.

Wenn Sie die frühe Bindung verwenden möchten, müssen Sie in Ihrem Projekt einen Verweis auf die Microsoft Scripting Runtime Library hinzufügen.

Wählen Sie im Menü des VBE Extras > Verweise.

verweise microsoft scripting runtime

Scrollen Sie nach unten zu Microsoft Scripting Runtime und vergewissern Sie sich, dass das Kästchen daneben markiert ist. Klicken Sie auf OK. Ihrem VBA-Projekt wird nun ein Verweis hinzugefügt, und Sie können ein neues Wörterbuchobjekt definieren, indem Sie direkt darauf verweisen.

Sub BeispielFrueheBindung()
 Dim MeinWoerterbuch As New Scripting.Dictionary
End Sub

Wenn Sie die späte Bindung verwenden, können Sie CreateObject verwenden, um ein Wörterbuchobjekt zu erstellen. Wenn Sie dies tun, müssen Sie Ihrem Projekt keinen Verweis auf Microsoft Scripting Runtime hinzufügen.

Sub BeispielSpaeteBindung()
 Dim MeinWoerterbuch As Object
 Set MeinWoerterbuch = CreateObject("Scripting.Dictionary")
End Sub

Elemente zum Wörterbuch hinzufügen

Sobald Sie ein Wörterbuchobjekt erstellt haben, können Sie dem Wörterbuch Elemente hinzufügen.

Sub WoerterbuchAuffuellen()
 Dim MeinWoerterbuch As New Scripting.Dictionary
 MeinWoerterbuch.Add 10, "MeinElement1"
 MeinWoerterbuch.Add 20, "MeinElement2"
 MeinWoerterbuch.Add 30, "MeinElement3"
End Sub

Mit diesem Code wird ein neues Wörterbuchobjekt mit dem Namen „MeinWoerterbuch“ erstellt und anschließend mit drei Einträgen gefüllt. Die Add-Methode hat zwei Parameter (Key und Item) und beide sind erforderlich.

Der Schlüssel muss eindeutig sein, da dieser der Nachschlagewert im Wörterbuch darstellt. Wenn der Schlüssel nicht eindeutig ist, erhalten Sie eine Fehlermeldung, wenn Sie versuchen, den Code auszuführen.

Woerterbuch Element bereits vorhanden Fehlermedung

Die Datentypen für Key und Item sind beide variant, d. h. sie akzeptieren jede Art von Daten (numerisch, Text, Datum usw.).

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

MyDictionary.Add "MeinElement1", 10

Die Werte wurden zwischen Schlüssel und Element vertauscht, aber das würde immer noch funktionieren, obwohl der Suchschlüssel jetzt „MeinElement1“ wäre.

Werte aus dem Wörterbuch auslesen

Sobald Sie Ihr Wörterbuch gefüllt haben, können Sie die Schlüssel und Elemente daraus entweder einzeln auslesen oder eine Schleife verwenden, um alle Elemente und Schlüssel durchzugehen.

Um einzelne Werte zu lesen, können Sie das Element oder den Schlüssel einfach über die Indexnummer im Wörterbuch auslesen. Die Indexnummer in einem Wörterbuch beginnt immer bei 0.

Sub IndexNummern()
 Dim MeinWoerterbuch As New Scripting.Dictionary
 MeinWoerterbuch.Add 10, "Element1"
 MeinWoerterbuch.Add 20, "Element2"
 MeinWoerterbuch.Add 30, "Element3"
 MsgBox MeinWoerterbuch.Keys(0)
End Sub

gibt 10 zurück.

Und

Sub IndexNummern()
 Dim MeinWoerterbuch As New Scripting.Dictionary
 MeinWoerterbuch.Add 10, "Element1"
 MeinWoerterbuch.Add 20, "Element2"
 MeinWoerterbuch.Add 30, "Element3"
 MsgBox MeinWoerterbuch.Items(1)
End Sub

gibt „Element2“ zurück.

Wir können auch das Wörterbuch in einer Schleife durchlaufen, um jeden Schlüssel und jedes Element zurückzugeben.

Sub WoerterbuchAuslesen()
 Dim MeinWoerterbuch As New Scripting.Dictionary, I As Variant
 MeinWoerterbuch.Add 10, "MeinElement1"
 MeinWoerterbuch.Add 20, "MeinElement2"
 MeinWoerterbuch.Add 30, "MeinElement3"
 For Each I In MeinWoerterbuch.Keys
 MsgBox I & " " & MeinWoerterbuch(I)
 Next I
End Sub

Elementwert eines Schlüssels ändern

Es ist sehr einfach, den Wert eines Elements in einem Wörterbuch zu ändern.

MeinWoerterbuch("20") = "MeinNeuesElement2"

Mit dieser Methode können Sie auch Elemente zu einem Wörterbuch hinzufügen. Wenn der Schlüssel nicht vorhanden ist, wird er automatisch erstellt.

Also der Code:

MeinWoerterbuch("40") = "MeinNeuesElement4"

Fügt dem Wörterbuch einen vierten Eintrag hinzu.

Einträge aus dem Wörterbuch löschen

Genauso einfach ist es, Einträge aus dem Wörterbuch zu löschen.

MeinWoerterbuch.Remove("20")

Entfernt Eintrag2.

Sie können auch alle Einträge aus einem Wörterbuch entfernen.

MeinWoerterbuch.RemoveAll

Geltungsbereich des Wörterbuchs

Da Sie dieses Wörterbuch in der Unterprozedur WoerterbuchAuffuellen deklariert haben, ist es nur in dieser Unterprozedur verfügbar. Wenn Sie möchten, dass ein Wörterbuch im gesamten Modul verfügbar ist, müssen Sie es auf Modulebene und nicht auf Prozedurenebene deklarieren. Sie können dies am Anfang des Moduls unter Option Explicit tun .

Woerterbuch auf Modulebene definieren

Wenn das Wörterbuch für das gesamte Projekt verfügbar sein soll, müssen Sie es auf globaler Ebene deklarieren, damit es für das gesamte Projekt verfügbar ist. Es kann immer noch am Anfang Ihres Moduls deklariert werden, aber Sie müssen die Anweisung PUBLIC und nicht DIM verwenden, um eine globale Variable zu deklarieren.

Woerterbuch auf Projektebene definieren

Das Wörterbuch in einer Arbeitsmappe verwenden

Nachdem Sie Ihr Wörterbuch aufgefüllt haben, können Sie eine Arbeitsmappe mit den Elementen und/oder Schlüsseln des Wörterbuchs füllen.

Der folgende Code durchläuft alle Einträge des Wörterbuchs und füllt Spalte A mit den Schlüsselwerten und Spalte B mit dem Elementwerten aus.

Sub InArbeitsblattKopieren()
 Dim MeinWoerterbuch As New Scripting.Dictionary
 Dim n As Integer
 MeinWoerterbuch.Add 10, "Element1"
 MeinWoerterbuch.Add 20, "Element2"
 MeinWoerterbuch.Add 30, "Element3"
 Range("A1").Select
 For n = 0 To MeinWoerterbuch.Count - 1
 ActiveCell.Value = MeinWoerterbuch.Keys(n)
 ActiveCell.Offset(0, 1).Value = MeinWoerterbuch.Items(n)
 ActiveCell.Offset(1, 0).Select
 Next n
End Sub
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples