LBound

Returns a Long containing the smallest available subscript for the indicated dimension of an array.

Syntax: LBound( arrayname [ , dimension ] )

arrayname
required The name of the array variable; follows standard variable naming conventions.
dimension
optional A Long indicating which dimension’s lower bound is returned. Use 1 for the first dimension, 2 for the second, and so on. If dimension is omitted, 1 is assumed.

Important

On a dynamic array that has never been sized — one declared Dim a() As Long and not yet ReDim‘d, or one Erase has released — this raises run-time error 9, Subscript out of range, rather than returning anything. Test with IsArrayInitialized first. A ParamArray is always initialized, so it needs no guard: with no arguments passed it reports bounds of 0 and -1.

LBound is used together with UBound to determine the size of an array.

For an array Dim A(1 To 100, 0 To 3, -3 To 4), LBound returns:

Statement Return value
LBound(A, 1) 1
LBound(A, 2) 0
LBound(A, 3) -3

The default lower bound for any dimension is either 0 or 1, depending on the Option Base setting. Arrays created with the Array function are zero-based regardless of Option Base. Arrays whose dimensions are set with the To clause in Dim, Private, Public, ReDim, or Static can have any integer lower bound.

Example

This example uses LBound to return the smallest available subscript for the indicated dimension of an array.

Dim Lower As Long
Dim MyArray(1 To 10, 5 To 15, 10 To 20)    ' Multidimensional array.
Dim AnyArray(10)
Lower = LBound(MyArray, 1)                 ' Returns 1.
Lower = LBound(MyArray, 3)                 ' Returns 10.
Lower = LBound(AnyArray)                   ' Returns 0 or 1, per Option Base.

See Also