Inhaltsverzeichnis:
Video: EXCEL VBA Die wichtigsten Befehle #6 - Arrays, Datenfelder / Einführung Excel VBA 2024
zu speichern. Die meisten Programmiersprachen unterstützen Arrays, einschließlich VBA. Ein -Array ist eine Gruppe von Variablen, die einen Namen haben. Sie verweisen auf eine bestimmte Variable im Array, indem Sie den Arraynamen und eine Indexnummer in Klammern verwenden. Sie können zum Beispiel ein Array von 12 String-Variablen definieren, um die Namen der Monate des Jahres zu speichern. Wenn Sie das Array MonthNames benennen, können Sie auf das erste Element des Arrays als MonthNames (1), das zweite Element als MonthNames (2) und so weiter verweisen.
Deklaration von Arrays
Bevor Sie ein Array verwenden können, müssen Sie es deklarieren . Keine Ausnahmen. Im Gegensatz zu normalen Variablen ist VBA bei dieser Regel sehr streng. Sie deklarieren ein Array mit einer Dim- oder Public-Anweisung, genauso wie Sie eine reguläre Variable deklarieren. Sie müssen jedoch auch die Anzahl der Elemente im Array angeben. Dazu geben Sie die erste Indexnummer, das Schlüsselwort To und die letzte Indexnummer an - alles in Klammern. Das folgende Beispiel zeigt, wie ein Array von 100 Ganzzahlen deklariert wird:
Dim MyArray (1 To 100) As Integer
Wenn Sie ein Array deklarieren, können Sie nur den oberen Index angeben. Wenn Sie den unteren Index weglassen, geht VBA davon aus, dass es 0 ist. Daher deklarieren beide der folgenden Anweisungen dasselbe 101-Element-Array:
Dim MyArray (0 bis 100) As Integer Dim MyArray (100) As Integer
Wenn Sie möchten, dass VBA davon ausgeht, dass 1 (und nicht 0) der niedrigere Index für Ihre Arrays ist, fügen Sie die folgende Anweisung in den Deklarationsbereich am oberen Rand Ihres Moduls ein:
Option Base 1
Diese Anweisung zwingt VBA, 1 als erste Indexnummer für Arrays zu verwenden, die nur den oberen Index deklarieren. Wenn diese Anweisung vorhanden ist, sind die folgenden Anweisungen identisch und deklarieren beide ein Array mit 100 Elementen:
Dim MyArray (1 bis 100) As Integer Dim MyArray (100) As Integer
Mehrdimensionale Arrays
Die erstellten Arrays In den vorherigen Beispielen sind alle eindimensionalen Arrays. Denken Sie an eindimensionale Arrays als eine einzige Zeile von Werten. Arrays, die Sie in VBA erstellen, können bis zu 60 Dimensionen haben - obwohl Sie selten mehr als zwei oder drei Dimensionen in einem Array benötigen. Das folgende Beispiel deklariert ein 81-Integer-Array mit zwei Dimensionen:
Dim MyArray (1 bis 9, 1 bis 9) As Integer
Sie können sich dieses Arrays als eine 9 x 9-Matrix vorstellen - ideal zum Speichern aller Zahlen in einem Sudoku-Puzzle.
Um auf ein bestimmtes Element in diesem Array zu verweisen, müssen Sie zwei Indexnummern angeben (ähnlich wie "row" und "column" in der Matrix).Das folgende Beispiel zeigt, wie Sie einem Element in diesem Array einen Wert zuweisen können:
MyArray (3, 4) = 125
Diese Anweisung weist einem einzelnen Element im Array einen Wert zu. Wenn Sie an das Array in Form einer 9 x 9-Matrix denken, ordnet dies 125 dem Element zu, das sich in der dritten Zeile und vierten Spalte der Matrix befindet.
So deklarieren Sie ein dreidimensionales Array mit 1 000 Elementen:
Dim My3DArray (1 bis 10, 1 bis 10, 1 bis 10) As Integer
Sie können sich ein dreidimensionales Bild vorstellen. Array als Würfel. Es ist schwieriger, ein Array mit mehr als drei Dimensionen zu visualisieren.
Dynamische Arrays
Sie können auch dynamische Arrays erstellen. Ein dynamisches Array hat keine voreingestellte Anzahl von Elementen. Deklarieren Sie ein dynamisches Array mit einem leeren Satz von Klammern:
Dim MyArray () As Integer
Bevor Sie dieses Array verwenden können, müssen Sie mit der ReDim-Anweisung VBA mitteilen, wie viele Elemente das Array hat. Normalerweise wird die Anzahl der Elemente im Array bestimmt, während der Code ausgeführt wird. Sie können die ReDim-Anweisung beliebig oft verwenden und die Größe des Arrays beliebig oft ändern. Im folgenden Beispiel wird veranschaulicht, wie die Anzahl der Elemente in einem dynamischen Array geändert wird. Es wird davon ausgegangen, dass die NumElements-Variable einen Wert enthält, den Ihr Code berechnet hat.
ReDim MyArray (1 To NumElements)
Wenn Sie ein Array mit ReDim neu dimensionieren, löschen Sie alle aktuell in den Array-Elementen gespeicherten Werte. Sie können es vermeiden, die alten Werte mit dem Schlüsselwort Preserve zu zerstören. Das folgende Beispiel zeigt, wie Sie die Werte eines Arrays beibehalten können, wenn Sie das Array neu dimensionieren:
ReDim Preserve MyArray (1 To NumElements)
Wenn MyArray derzeit zehn Elemente enthält und Sie die vorherige Anweisung mit NumElements gleich 12 ausführen, Die ersten zehn Elemente bleiben intakt, und das Array hat Platz für zwei zusätzliche Elemente (bis zu der in der Variablen NumElements enthaltenen Zahl). Wenn NumElements jedoch gleich 7 ist, bleiben die ersten sieben Elemente erhalten, aber die verbleibenden drei Elemente erfüllen ihr Ende.