Fixed Size
Fixed arrays have a fixed size which cannot be changed at run-time.
These are also known as Static Arrays.
An array is declared by including parentheses after the array name or identifier.
An integer is placed within the parentheses, defining the number of elements in the array.
Fixed Array - Integer Data Type Array
You can declare a fixed array using the Dim statement.
It is good practice to always declare your arrays with an explicit data type.
This line creates an array of Integers with 4 items.
All VBA arrays (by default) start at zero.
Dim myArray(3) As Integer
Debug.Print myArray(0) '= 0
Debug.Print myArray(1) '= 0
Debug.Print myArray(2) '= 0
Debug.Print myArray(3) '= 0
Fixed Array - Variant Data Type Array
This line creates an array of Variant with 4 items.
Dim myArray(3) As Variant
Debug.Print myArray(0) '= Empty
Debug.Print myArray(1) '= Empty
Debug.Print myArray(2) '= Empty
Debug.Print myArray(3) '= Empty
Fixed Array - Variant Data Type
You can declare a fixed array as a single variant data type and then use the ARRAY function.
This function declares and adds the values in one statement.
Dim avNumbers As Variant
avNumbers = Array(10,20,30)
An array created with a single variant data type will always create an array of Variants.
Default Values
After declaring an array it will contain default values.
Numeric arrays will contain the number 0.
String arrays will contain the Empty String "".
Variant arrays will contain the Empty keyword.
Object arrays will contain the Nothing keyword.
Explicit Lower Bound
It is possible to explicitly declare the lower bound of your fixed array.
The following two lines are equivalent and both these arrays contain 101 elements.
The index values range from 0 to 100.
Dim myArray(100) As Integer
Dim myArray(0 To 100) As Integer
If you wanted to declare an array containing exactly 100 elements you could do this in a number of different ways.
Dim myArray(99) As Integer
Dim myArray(0 To 99) As Integer
Dim myArray(1 To 100) As Integer
The first two lines are equivalent. The first element is myArray(0) and the last element is myArray(99).
The last line has slightly different index numbers. The first element is myArray(1) and the last element is myArray(100).
In fact you could define the index numbers to be any range you like as long as the first number is less than the second number.
Dim myArray(101 To 200) As Integer
Dim myArray(-49 To 50) As Integer
When you explicitly declare the lower bound of your array this will override the Option Base statement.
Never Use Option Base 1
If you want all your arrays to start at the index number 1 (instead of 0) you can explicitly declare the lower bound to be 1.
More details can be found on the Option Base 1 page.
The following line of code will declare an array containing exactly 100 elements with the index values from 1 to 100.
Dim myArray(1 To 100) As Integer
Important
For more details about using Excel Ranges with arrays, refer to the Cells & Ranges > Working with Arrays page.
© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited TopPrevNext