Deklarieren von Arrays

Arrays werden genauso wie andere Variablen mit den Anweisungen Dim, Static, Private oder Public deklariert. Der Unterschied zwischen skalaren Variablen (Variablen, die keine Arrays sind) und Arrayvariablen besteht darin, dass Sie generell die Größe des Datenfelds angeben müssen. Ein Array, dessen Größe angegeben ist, ist ein Array fester Größe. Ein Array, dessen Größe sich beim Ausführen eines Programms ändern kann, ist ein dynamisches Array.

Ob ein Array mit 0 oder 1 beginnend indiziert wird, hängt von der Einstellung der Option Base-Anweisung ab. Wenn Option Base 1 nicht angegeben ist, beginnen alle Arrayindizes bei Null.

Deklarieren eines Arrays fester Größe

In der folgenden Codezeile wird ein Array fester Größe als Integer -Array mit 11 Zeilen und 11 Spalten deklariert:

Dim MyArray(10, 10) As Integer 

Das erste Argument stellt die Zeilen, das zweite Argument die Spalten dar.

Wie bei jeder Variablendeklaration ist der Datentyp der Elemente in einem deklarierten Array ein Variant, sofern Sie keinen anderen Datentyp für das Array angeben. Jedes numerische Variant -Element des Arrays verwendet 16 Bytes. Jedes Variant -Zeichenfolgenelement verwendet 22 Bytes. Deklarieren Sie die Arrays explizit mit einem Datentyp, der nicht Variant ist, um den Code so kompakt wie möglich zu gestalten.

Die folgenden Codezeilen vergleichen die Größe verschiedener Arrays.

' Integer array uses 22 bytes (11 elements * 2 bytes). 
ReDim MyIntegerArray(10) As Integer 
 
' Double-precision array uses 88 bytes (11 elements * 8 bytes). 
ReDim MyDoubleArray(10) As Double 
 
' Variant array uses at least 176 bytes (11 elements * 16 bytes). 
ReDim MyVariantArray(10) 
 
' Integer array uses 100 * 100 * 2 bytes (20,000 bytes). 
ReDim MyIntegerArray (99, 99) As Integer 
 
' Double-precision array uses 100 * 100 * 8 bytes (80,000 bytes). 
ReDim MyDoubleArray (99, 99) As Double 
 
' Variant array uses at least 160,000 bytes (100 * 100 * 16 bytes). 
ReDim MyVariantArray(99, 99) 

Die maximale Größe eines Arrays hängt von Ihrem Betriebssystem und vom verfügbaren Speicher ab. Wenn ein verwendetes Array den für Ihr System verfügbaren RAM-Speicher überschreitet, wird das System langsamer, da die Daten von der Festplatte gelesen und auf die Festplatte geschrieben werden müssen.

Deklarieren eines dynamischen Arrays

Sie können die Größe des Arrays ändern, während der Code ausgeführt wird, indem Sie ein dynamisches Array deklarieren. Verwenden Sie eine Static-, Dim-, Private- oder Public-Anweisung, um ein Array zu deklarieren. Lassen Sie die Klammer dabei wie im folgenden Beispiel leer.

Dim sngArray() As Single 

Hinweis

Verwenden Sie die ReDim-Anweisung, um ein Array implizit innerhalb einer Prozedur zu deklarieren. Achten Sie bei der ReDim-Anweisung darauf, den Namen des Arrays richtig zu schreiben. Auch wenn sich die Option Explicit-Anweisung im Modul befindet, wird ein zweites Datenfeld erstellt.

Verwenden Sie in einer Prozedur innerhalb des Gültigkeitsbereichs des Arrays die ReDim-Anweisung, um die Anzahl der Dimensionen zu ändern und die Anzahl der Elemente sowie die oberen und unteren Grenzen jeder Dimension zu definieren. Verwenden Sie die ReDim-Anweisung, um das dynamische Array so oft wie nötig zu ändern. Dabei gehen jedoch jedes Mal die bestehenden Werte des Arrays verloren. Verwenden Sie ReDim Preserve, um ein Array zu erweitern und die vorhandenen Werte im Array beizubehalten.

Die folgende Anweisung vergrößert beispielsweise das Array um 10 Elemente, ohne die aktuellen Werte der ursprünglichen Elemente zu verlieren.

ReDim Preserve varArray(UBound(varArray) + 10) 

Hinweis

Wenn Sie das Schlüsselwort Preserve mit einem dynamischen Array verwenden, können Sie nur die obere Grenze der letzten Dimension, aber nicht die Anzahl der Dimensionen ändern.

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.