image

Eine Sammlung ist ein Datentyp, der Objekte wie Arrays (aber unterschiedlich) speichert. Beim Schreiben grundlegender VBA-Codes müssen Sie Arbeitsmappen, Arbeitsblätter, Bereiche usw. verwendet haben. Alle sind Sammlungen. In diesem Artikel erfahren Sie mehr über VBA-Sammlungen.

Was ist eine Sammlung in VBA?

Eine Sammlung ist ein Datentyp, der ähnliche Objekttypen wie Arrays speichert. Im Gegensatz zu Arrays kann die Größe jedoch je nach Anforderung dynamisch erhöht oder verringert werden.

Sie können Elemente zu Sammlungen hinzufügen, suchen, abrufen und löschen.

Im Gegensatz zu Arrays können Sie die Werte von Elementen in Sammlungen nicht ändern. Wenn Sie möchten, verwenden Sie Arrays als Element in der Sammlung.

Einer Sammlung sind 4 Eigenschaften oder Methoden zugeordnet.

Collection.Add

Collection.Item

Collection.Count

Collection.Remove

In diesem Artikel wird die Verwendung dieser Eigenschaften untersucht.

Wie erstelle ich eine Sammlung in VBA?

Eine Sammlung ist ein Objekt, daher muss sie deklariert und initialisiert werden. Wie bei jedem anderen Objekt in VBA gibt es zwei Methoden zum Erstellen einer Sammlung in VBA.

1. Sofortige Erstellung

Dim items as new Collection

Bei der obigen Methode wird das Objekt sofort erstellt. Sie können diese Sammlung sofort für Ihre Anforderungen verwenden.

image

2. Verzögerte Erstellung

Dim items as Collection

Set items = New Collection

Bei dieser Methode erstellen wir zuerst eine Referenz der Sammlung und initialisieren sie bei Bedarf mit einem Sammlungsobjekt. Mit dieser Methode können Sie die Sammlung anhand einiger Kriterien erstellen.

image

Hinzufügen von Elementen zu einer Sammlung (Collection.Add)

Wir verwenden die Add-Methode, um einer Sammlung neue Elemente hinzuzufügen.

items.Add "Apples"

Der obige Code fügt der Sammlung die Zeichenfolge „Äpfel“ hinzu.

items.Add 1.4

Der obige Code fügt dem Ende der Sammlung double 1.4 hinzu.

image

Wir können auch Schlüssel für diese Elemente definieren. Mit diesen Schlüsseln können Sie auf die Elemente in der Sammlung zugreifen.

image

Einfügen von Elementen in die Sammlung vor oder nach einem vorhandenen Element

Die Add-Methode fügt am Ende der Sammlung neue Elemente hinzu. Die add-Methode hat vier Parameter.

Add(item,[Key],[Before],[After])

Das erste Argument ist notwendig. Es ist das Objekt oder das Sie der Sammlung hinzufügen möchten. Restargumente sind optional. Wir werden die Verwendung dieser Argumente in diesem Abschnitt sehen.

Wenn wir ein Element vor oder nach einem bestimmten Index / Schlüssel hinzufügen möchten, verwenden wir die Vorher- und Nachher-Parameter der Add-Methode.

items.Add True, "b", "cnst"

'Or

items.Add True, Before:="cnst"

In beiden Zeilen wird vor dem Schlüssel „cnst“ in den VBA Collection-Elementen ein boolescher Wert eingefügt.

Um ein Element nach einem bestimmten Index / Element / Schlüssel einzufügen, verwenden wir den Parameter After der Add-Methode.

'inserting "Mango" with key "m" after key "cnst"

items.Add "Mango", Key:="m", after:="b"

In der obigen Zeile wird „Mango“ mit der Taste „m“ nach der Taste „b“ eingefügt.

image

Hinweis: * Die Schlüssel der Elemente sollten eindeutig sein. Schlüssel, die bereits in der Sammlung vorhanden sind, werden nicht akzeptiert. VBA gibt den Fehler zurück, dass „der Schlüssel bereits einem Element dieser Sammlung zugeordnet ist“.

image

Wir können dies zu unserem Vorteil nutzen, um eine eindeutige Liste aus der Sammlung zu erhalten.

Zugriff auf Sammlungsgegenstände (Collection.Item)

Es gibt zwei Methoden, um auf die Elemente einer Sammlung zuzugreifen. . Sammlungsname („Index / Schlüssel“)

  1. CollectionName.Item („index / key“)

Um beispielsweise auf ein Mitglied in einer Sammlung * unter Index 1 und den Schlüssel „apl“ zuzugreifen, kann ich einen der folgenden VBA-Codes verwenden.

Debug.Print items.Item(1)

--

Debug.Print items(1)

--

Debug.Print items.Item("apl")

--

Debug.Print items("apl")

image

Wie erhalte ich die Anzahl der Elemente in einer Sammlung? (Collection.Count)

Um die Gesamtzahl der Objekte oder Elemente in einer Sammlung zu ermitteln, verwenden wir die .Count-Funktion der Sammlung. Die .Count-Methode gibt die Gesamtzahl der Elemente in der Sammlung zurück.

items.Count

Die obige Zeile gibt die Anzahl der Objekte an, über die die Sammlung verfügt.

Wie greife ich auf alle Objekte einer Sammlung zu?

Die einzige Möglichkeit, auf alle Elemente der Sammlung in VBA zuzugreifen, sind Schleifen.

Wir durchlaufen jedes Sammlungselement, um darauf zuzugreifen. Dafür verwenden wir for loop. Die for-each-Schleife gilt als schnellste und sauberste Methode für den Zugriff auf Sammlungsobjekte.

Durchlaufen einer Sammlung in VBA

Es gibt verschiedene Möglichkeiten, die Sammlung in VBA zu durchlaufen. Wir werden für jede Schleife die eleganteste verwenden, um die Sammlung zu durchlaufen.

Um jedes Element einer Sammlung zu durchlaufen, verwenden Sie einfach diese Zeile des VBA-Codes.

For Each itm In items

Debug.Print itm

Next itm

image

Elemente aus einer Sammlung entfernen (Collection.Remove)

Um ein Element aus einer vba-Sammlung zu entfernen, können Sie die Remove-Methode verwenden. Die Methode remove verwendet ein Argument. Dies kann der Index oder der Schlüssel des Elements sein (falls verfügbar).

items.Remove (1) 'using index

--

items.Remove 1

--

items.Remove ("apl") 'using key

--

items.Remove "apl"

Sammlung in VBA löschen

Nun, Sie können eine Sammlung in vba nicht löschen. Sie können jedoch alle Elemente dieser Sammlung entfernen, indem Sie sie erneut als neue Sammlung festlegen.

Set items = New Collection

Diese Codezeile erstellt eine neue Sammlung für die Adresse von Elementen.

Daher wird unsere Sammlung geleert.

image

Array vs Collection in VBA

  1. Array size is predefined. The size of array can not be changed

normally.

  1. Array’s can hold only same type of data and the type must be declared

first.

  1. Indexing in array starts from 0

  2. Array members does not have any associated key.

  3. Arrays are mutable. You can change the values of its members.

  1. Collection’s size changes as items are added or removed.

  2. A collection can hold any number of data type. As you have seen in the

above examples.

  1. Indexing in VBA Collection starts from 1.

  2. Collection members can have keys associated with.

  3. Collections are immutable. You cannot change values of its member

directly.

Also ja Leute, das sind die Grundlagen von Sammlungen. Es gibt viele Vorteile und Verwendungsmöglichkeiten der VBA-Sammlung in Office-Tools. Wir werden sie gemeinsam erkunden. Wenn Sie bis dahin Fragen zur Sammlung oder zu Excel / VBA haben, schreiben Sie diese in den Kommentaren unten.