VBA Arrays

An array in Visual Basic for Applications (VBA) is a collection of values that are stored under a single variable name. Arrays allow you to store and manipulate multiple values of the same data type using a single variable.

How to Create VBA Arrays: To create an array in VBA, you need to declare the array variable and specify its size (number of elements). Here’s an example of how to create a one-dimensional array of integers:

Dim myArray(4) As Integer ' Creates an array with 5 elements (0 to 4)

How to Add Items to a VBA Array: VBA arrays have a fixed size, so you can’t directly add new elements beyond the array’s initial size. However, you can resize the array using the ReDim statement:

ReDim Preserve myArray(6) ' Resizes the array to have 7 elements (0 to 6) myArray(5) = 42 ' Assigns a value to the newly added element

How to Remove Items from a VBA Array: VBA arrays don’t have built-in methods to remove specific elements. If you want to “remove” an element, you would usually mark it as empty or unused.

myArray(3) = Empty ' Marks the fourth element as empty or unused

How to Delete Items from a VBA Array: To delete an item from a VBA array, you would typically shift the remaining elements to fill the gap left by the deleted item.

For i = indexToDelete To UBound(myArray) - 1
myArray(i) = myArray(i + 1) ' Shift elements to the left
Next i
ReDim Preserve myArray(UBound(myArray) - 1) ' Resize to remove the last element

Looping Through a VBA Array: You can use loops to iterate through the elements of a VBA array. Here’s an example using a For Each loop:

Dim item As Variant
For Each item In myArray
' Process each element (item) in the array
Debug.Print item
Next item

Multi-Dimensional Arrays: VBA supports multi-dimensional arrays, which are arrays with more than one index. For example, a two-dimensional array can be thought of as a table with rows and columns.

Dim matrix(3, 2) As Integer ' Creates a 2D array with 4 rows and 3 columns

matrix(1, 2) = 10 ' Assigns a value to a specific element in the array

Array Functions: VBA provides some built-in functions for working with arrays:

  • LBound(array) returns the lower bound of the array.
  • UBound(array) returns the upper bound of the array.
  • Array() creates an array from a list of values.

Sorting an Array: You can use various sorting algorithms to sort the elements of an array. Here’s an example using the Bubble Sort algorithm:

Sub BubbleSort(arr() As Integer)
Dim i As Long, j As Long
Dim temp As Integer
For i = LBound(arr) To UBound(arr) - 1
For j = i + 1 To UBound(arr)
If arr(i) > arr(j) Then
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
End If
Next j
Next i
End Sub

Searching in an Array: You can perform searches within an array. Here’s an example of a linear search:

Function LinearSearch(arr() As Integer, target As Integer) As Long
Dim i As Long
For i = LBound(arr) To UBound(arr)
If arr(i) = target Then
LinearSearch = i
Exit Function
End If
Next i
LinearSearch = -1 ' Element not found
End Function

Dynamic Arrays: In addition to using ReDim, you can create dynamic arrays using the Dim statement without specifying a size. This allows you to resize the array as needed.

Dim dynamicArray() As Integer ' Declare a dynamic array

ReDim dynamicArray(10) ' Resize the array to have 11 elements

What are your feelings