Deklarieren von ArraysDeclaring arrays

Arrays werden genauso wie andere Variablen mit den Anweisungen Dim, Static, Private oder Public deklariert.Arrays are declared the same way as other variables, by using the Dim, Static, Private, or Public statements. 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.The difference between scalar variables (those that aren't arrays) and array variables is that you generally must specify the size of the array. Ein Array, dessen Größe angegeben ist, ist ein Array fester Größe.An array whose size is specified is a fixed-size array. Ein Array, dessen Größe sich beim Ausführen eines Programms ändern kann, ist ein dynamisches Array.An array whose size can be changed while a program is running is a dynamic array.

Ob ein Array mit 0 oder 1 beginnend indiziert wird, hängt von der Einstellung der Option Base-Anweisung ab.Whether an array is indexed from 0 or 1 depends on the setting of the Option Base statement. Wenn Option Base 1 nicht angegeben ist, beginnen alle Arrayindizes bei Null.If Option Base 1 is not specified, all array indexes begin at zero.

Deklarieren eines Arrays fester GrößeDeclare a fixed array

In der folgenden Codezeile wird ein Array fester Größe als Integer -Array mit 11 Zeilen und 11 Spalten deklariert:In the following line of code, a fixed-size array is declared as an Integer array having 11 rows and 11 columns:

Dim MyArray(10, 10) As Integer 

Das erste Argument stellt die Zeilen, das zweite Argument die Spalten dar.The first argument represents the rows; the second argument represents the columns.

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.As with any other variable declaration, unless you specify a data type for the array, the data type of the elements in a declared array is Variant. Jedes numerische Variant -Element des Arrays verwendet 16 Bytes.Each numeric Variant element of the array uses 16 bytes. Jedes Variant -Zeichenfolgenelement verwendet 22 Bytes.Each string Variant element uses 22 bytes. Deklarieren Sie die Arrays explizit mit einem Datentyp, der nicht Variant ist, um den Code so kompakt wie möglich zu gestalten.To write code that is as compact as possible, explicitly declare your arrays to be of a data type other than Variant.

Die folgenden Codezeilen vergleichen die Größe verschiedener Arrays.The following lines of code compare the size of several 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.The maximum size of an array varies, based on your operating system and how much memory is available. 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.Using an array that exceeds the amount of RAM available on your system is slower because the data must be read from and written to disk.

Deklarieren eines dynamischen ArraysDeclare a dynamic array

Sie können die Größe des Arrays ändern, während der Code ausgeführt wird, indem Sie ein dynamisches Array deklarieren.By declaring a dynamic array, you can size the array while the code is running. Verwenden Sie eine Static-, Dim-, Private- oder Public-Anweisung, um ein Array zu deklarieren. Lassen Sie die Klammer dabei wie im folgenden Beispiel leer.Use a Static, Dim, Private, or Public statement to declare an array, leaving the parentheses empty, as shown in the following example.

Dim sngArray() As Single 

Hinweis

Sie können ein Array mit der ReDim-Anweisung implizit innerhalb einer Prozedur deklarieren.You can use the ReDim statement to declare an array implicitly within a procedure. Achten Sie bei der ReDim-Anweisung darauf, den Namen des Arrays richtig zu schreiben.Be careful not to misspell the name of the array when you use the ReDim statement. Auch wenn sich die Option Explicit-Anweisung im Modul befindet, wird ein zweites Datenfeld erstellt.Even if the Option Explicit statement is included in the module, a second array will be created.

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.In a procedure within the array's scope, use the ReDim statement to change the number of dimensions, to define the number of elements, and to define the upper and lower bounds for each dimension. Sie können das dynamische Array mit der ReDim-Anweisung so oft wie nötig ändern.You can use the ReDim statement to change the dynamic array as often as necessary. Dabei gehen jedoch jedes Mal die bestehenden Werte des Arrays verloren.However, each time you do this, the existing values in the array are lost. Verwenden Sie ReDim Preserve, um ein Array zu erweitern und die vorhandenen Werte im Array beizubehalten.Use ReDim Preserve to expand an array while preserving existing values in the array.

Die folgende Anweisung vergrößert beispielsweise das Array um 10 Elemente, ohne die aktuellen Werte der ursprünglichen Elemente zu verlieren.For example, the following statement enlarges the array by 10 elements without losing the current values of the original elements.

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.When you use the Preserve keyword with a dynamic array, you can change only the upper bound of the last dimension, but you can't change the number of dimensions.

Siehe auchSee also

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.