Excel VBA-Arrays: Typen und Anwendung anhand von Beispielen

⚡ Intelligente Zusammenfassung

Excel-VBA-Arrays speichern eine Gruppe zusammengehöriger Werte desselben Datentyps unter einem Namen, auf den über einen Index zugegriffen wird. Diese Seite erklärt statische und dynamische Arrays, ein-, zwei- und mehrdimensionale Arrays, die Deklarationssyntax und ein durchgerechnetes Beispiel zum Laden von Getränken.

  • 📦 Array-Konzept: Ein einzelner benannter Speicherplatz, der viele Werte desselben Datentyps enthält, die durch einen Index getrennt sind.
  • 🎯 Vorteile: Arrays gruppieren zusammengehörige Daten, reduzieren die Anzahl der Variablen und beschleunigen das Abrufen und Sortieren von Daten.
  • 📌 Statisches Array: Deklariert mit einer festen Größe, zum Beispiel Dim ArrayMonth(12) As String, wenn die Anzahl der Elemente bekannt ist.
  • 🔄 Dynamisches Array: Das Array wird mit Dim ArrayMonth() als leer deklariert und später mit ReDim dimensioniert, wenn die Anzahl der Elemente unbekannt ist.
  • 📐 Maße: Ein Array verwendet einen, zwei oder mehr Indizes, um einzelne Listen, Tabellen oder mehrstufige Daten abzubilden.
  • 🧪 Ausgearbeitetes Beispiel: Über eine Befehlsschaltfläche werden mithilfe von Sheet1.Cells vier Getränkenamen aus einem Array in Tabellenzellen geladen.

Excel VBA-Arrays

Was ist ein VBA-Array?

Ein Array ist als Speicherort definiert, der mehr als einen Wert speichern kann. Die Werte müssen alle vom gleichen Datentyp sein. Nehmen wir an, Sie möchten eine Liste Ihrer Lieblingsgetränke in einer einzigen Variablen speichern. Dazu können Sie ein VBA-Array verwenden.

Durch die Verwendung eines Arrays können Sie auf die zugehörigen Werte mit demselben Namen verweisen. Zur Unterscheidung können Sie einen Index oder einen Index verwenden. Die einzelnen Werte werden als Elemente des Excel VBA-Arrays bezeichnet. Sie sind vom Index 0 bis zum höchsten Indexwert zusammenhängend.

In diesem Tutorial wird davon ausgegangen, dass Sie Folgendes verwenden Microsoft Excel Version 2013. Das Wissen gilt weiterhin für andere Versionen von Microsoft Auch Excel.

Was sind die Vorteile von Arrays?

Bevor man Array-Code schreibt, ist es hilfreich zu verstehen, warum Arrays sinnvoll sind. Im Folgenden sind einige der Vorteile der VBA-Array-Funktion aufgeführt.

  1. Gruppieren Sie logisch zusammengehörige Daten – nehmen wir an, Sie möchten eine Liste von Schülern speichern. Sie können eine einzelne Array-Variable verwenden, die separate Speicherorte für Schülerkategorien hat, z. B. Kindergarten, Grundschule, Sekundarschule, weiterführende Schule usw.
  2. Arrays erleichtern das Schreiben von wartbarem Code. Für dieselben logisch zusammenhängenden Daten können Sie eine einzelne Variable definieren, anstatt mehr als eine Variable zu definieren.
  3. Bessere Leistung – Sobald ein Array definiert wurde, können Daten schneller abgerufen, sortiert und geändert werden.

Arten von Arrays in VBA

VBA unterstützt zwei Arten von Arrays, nämlich;

  • Statisch – Diese Arten von Arrays haben eine feste, vorab festgelegte Anzahl von Elementen, die gespeichert werden können. Die Größe des Datentyps eines statischen Arrays kann nicht geändert werden. Diese sind nützlich, wenn Sie mit bekannten Einheiten wie der Anzahl der Tage in einer Woche, dem Geschlecht usw. arbeiten möchten.Für Beispiel: ArrayMonth(12) als String dimmen
  • Dynamisch – Diese Arten von Arrays verfügen nicht über eine feste, vorab festgelegte Anzahl von Elementen, die gespeichert werden können. Diese sind nützlich, wenn Sie mit Entitäten arbeiten, deren Anzahl Sie nicht vorab festlegen können.Für Beispiel: ArrayMonth() als Variante dimmen

Sobald Sie wissen, welcher Datentyp zu Ihren Daten passt, besteht der nächste Schritt in der Deklarationssyntax für jeden Typ.

Syntax zum Deklarieren von Arrays

Statische Arrays

Die Syntax zum Deklarieren STATIC Arrays ist wie folgt:

Dim arrayName (n) as datatype

HIER,

Code Action
Dimmen Sie den Datentyp arrayName (n).
  1. Es deklariert eine Array-Variable namens arrayName mit einer Größe von n und einem Datentyp. Die Größe bezieht sich auf die Anzahl der Elemente, die das Array speichern kann.

Dynamische Arrays

Die Syntax zum Deklarieren DYNAMIC Arrays ist wie folgt:

Dim arrayName() as datatype
ReDim arrayName(4)

HIER,

Code Action
Dimmen Sie den Datentyp „arrayName()“.
  1. Es deklariert eine Array-Variable namens arrayName, ohne die Anzahl der Elemente anzugeben
ReDim arrayName(4)
  1. Es gibt die Array-Größe an, nachdem das Array definiert wurde.

Array-Dimensionen

Ein Array kann eindimensional, zweidimensional oder mehrdimensional sein.

  • Eine Dimension: In dieser Dimension verwendet das Array nur einen Index. Zum Beispiel eine Anzahl von Menschen jeden Alters.
  • Zwei Dimensionen: In dieser Dimension verwendet das Array zwei Indizes. Zum Beispiel eine Anzahl von Schülern in jeder Klasse. Es erfordert die Anzahl der Klassen und die Anzahl der Schüler in jeder Klasse
  • Mehrdimensional: In dieser Dimension verwendet das Array mehr als zwei Indizes. Zum Beispiel die Temperaturen tagsüber. (30, 40, 20).

So verwenden Sie Array in Excel VBA

Nachdem wir die Theorie behandelt haben, können wir ein Array in einer realen Arbeitsmappe anwenden. Wir erstellen eine einfache Anwendung. Diese Anwendung füllt ein Excel-Tabellenblatt mit Daten aus einer Array-Variablen. In diesem VBA-Array-Beispiel gehen wir wie folgt vor.

  • Erstelle eine neue Microsoft Excel-Arbeitsmappe und speichern Sie sie als Excel-Makro-fähige Arbeitsmappe (*.xlsm)
  • Fügen Sie der Arbeitsmappe eine Befehlsschaltfläche hinzu
  • Legen Sie die Namens- und Beschriftungseigenschaften der Befehlsschaltfläche fest
  • Programmieren der VBA, die die Excel-Tabelle füllt

Machen Sie diese Übung Schritt für Schritt,

Schritt 1 – Erstellen Sie eine neue Arbeitsmappe

  1. Öffne Microsoft Excel
  2. Speichern Sie die neue Arbeitsmappe als VBA Arrays.xlsm

Schritt 2 – Fügen Sie eine Befehlsschaltfläche hinzu

Hinweis: In diesem Abschnitt wird davon ausgegangen, dass Sie mit dem Prozess der Erstellung einer Schnittstelle in Excel vertraut sind. Wenn Sie nicht vertraut sind, lesen Sie das Tutorial VBA Excel-Formularsteuerung und ActiveX-Steuerung. Es zeigt Ihnen, wie Sie die Schnittstelle erstellen

  1. Fügen Sie dem Blatt eine Befehlsschaltfläche hinzu

Verwenden Sie Array in Excel VBA

  1. Legen Sie die Namenseigenschaft auf cmdLoadBeverages fest
  2. Legen Sie die caption-Eigenschaft auf „Getränke laden“ fest

Ihre GUI sollte nun wie folgt aussehen

Verwenden Sie Array in Excel VBA

Schritt 3 – Speichern Sie die Datei

  1. Klicken Sie auf die Schaltfläche Speichern unter
  2. Wählen Sie „Excel-Makro-fähige Arbeitsmappe (*.xlsm)“ aus, wie im Bild unten gezeigt

Verwenden Sie Array in Excel VBA

Schritt 4 – Schreiben Sie den Code

Wir werden nun den Code für unsere Anwendung schreiben

  1. Klicken Sie mit der rechten Maustaste auf die Schaltfläche „Getränke laden“ und wählen Sie „Code anzeigen“.
  2. Füge dem Klickereignis von cmdLoadBeverages den folgenden Code hinzu
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

HIER,

Code Action
Dimmen Sie Getränke (1 bis 4) als Zeichenfolge
  • Es deklariert eine Array-Variable namens Drinks. Der erste Array-Index ist 1 und der letzte Array-Index ist 4.
Getränke(1) = „Pepsi“
  • Weist dem ersten Array-Element den Wert Pepsi zu. Der andere ähnliche Code macht dasselbe für die anderen Elemente im Array.
Sheet1.Cells(1, 1).Value = “Meine Lieblingsgetränke”
  • Schreibt den Wert „Meine Lieblingsgetränke“ in die Zellenadresse A1. Sheet1 verweist auf das Blatt und Cells(1,1) verweist auf Zeilennummer 1 und Spalte 1 (B).
Sheet1.Cells(2, 1).Value = Drinks(1)
  • Schreibt den Wert des Array-Elements mit Index 1 in Zeile Nummer zwei von Spalte 1

Testen unserer Anwendung

Nachdem der Code eingefügt ist, besteht der letzte Schritt darin, die Schaltfläche auszuführen und zu überprüfen, ob das Array das Tabellenblatt füllt. Wählen Sie die Registerkarte „Entwicklertools“ und stellen Sie sicher, dass der Designmodus deaktiviert ist. Dies erkennen Sie daran, dass der Hintergrund weiß und nicht grünlich ist. (Siehe Abbildung unten.)

Testen einer Anwendung in Excel VBA

Klicken Sie auf die Schaltfläche Getränke laden

Sie erhalten folgende Ergebnisse

Testen einer Anwendung in Excel VBA

Laden Sie Excel herunter, das den obigen Code enthält

Laden Sie die obige Excel-Datei herunter. Code

Häufig gestellte Fragen

Ein statisches Array hat bei der Deklaration eine feste Größe, z. B. `Dim Arr(12)`. Ein dynamisches Array wird mit `Dim Arr()` als leer deklariert und später mit `ReDim` vergrößert, wenn die Anzahl der Elemente nicht im Voraus bekannt ist.

Mit `ReDim` kann die Größe eines dynamischen Arrays nach dessen Deklaration festgelegt oder geändert werden. Durch Hinzufügen des Schlüsselworts `Preserve`, wie in `ReDim Preserve Arr(10)`, bleiben die vorhandenen Werte beim Ändern der Größe erhalten; ohne `Preserve` werden alle gespeicherten Werte gelöscht.

Verwenden Sie die Funktionen LBound und UBound. LBound gibt den niedrigsten Index zurück, UBound den höchsten. Die Anzahl der Elemente entspricht UBound(Arr) minus LBound(Arr) plus eins. Dies funktioniert sowohl für statische als auch für dynamische Arrays.

Ja. KI-Assistenten wie Copilot generieren Array-Deklarationen und Schleifen aus einer einfachen Anfrage, beispielsweise um zehn Produktnamen in eine Spalte zu laden. Der Entwickler fügt den Code in den Editor ein und testet ihn an einer Kopie der Arbeitsmappe.

Ja. KI-Assistenten lesen die Fehlermeldung „Index außerhalb des gültigen Bereichs“ und den zugehörigen Code, zeigen dann auf den Index, der die Arraygrenzen überschreitet, und schlagen eine Lösung vor, beispielsweise die Anpassung der ReDim-Größe oder des Schleifenzählers. Der Entwickler wendet diese an und testet erneut.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: