When you try to iterate over an empty array in VBA like this, you will get a runtime error (index out of bounds):
-
Sub ArrayTest()
-
-
Dim testarray() As Integer
-
Dim i As Integer
-
-
For i = LBound(testarray) To UBound(testarray) ‘ <– error
-
Debug.Print testarray(i)
-
Next i
-
-
End Sub
Even if you check the return value of LBounds like this, it results in the same error:
-
Sub ArrayTest()
-
-
Dim testarray() As Integer
-
Dim i As Integer
-
-
If LBound(testarray) > 1 Then ‘ <– error
-
For i = LBound(testarray) To UBound(testarray)
-
Debug.Print testarray(i)
-
Next i
-
End If
-
-
End Sub
However, to get rid of the error and to iterate over a possibly empty array, the following code works:
-
Sub ArrayTest()
-
-
Dim testarray() As Integer
-
Dim i As Integer
-
-
On Error Resume Next
-
If LBound(testarray) > 1 Then
-
If Err.Number = 0 Then
-
For i = LBound(testarray) To UBound(testarray)
-
Debug.Print testarray(i)
-
Next i
-
End If
-
End If
-
-
End Sub
Visual Basic magic



