UBound
Returns a Long containing the largest available subscript for the indicated dimension of an array.
Syntax: UBound( arrayname [ , dimension ] )
- arrayname
- required The name of the array variable; follows standard variable naming conventions.
- dimension
- optional A Long indicating which dimension’s upper bound is returned. Use 1 for the first dimension, 2 for the second, and so on. If dimension is omitted, 1 is assumed.
UBound is used together with LBound to determine the size of an array.
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 an error (see Common Errors) 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.
For an array Dim A(1 To 100, 0 To 3, -3 To 4), UBound returns:
| Statement | Return value |
|---|---|
UBound(A, 1) | 100 |
UBound(A, 2) | 3 |
UBound(A, 3) | 4 |
Common Errors
| Error | When |
|---|---|
9 (&H9), Subscript out of range | arrayname is a dynamic array that has not been sized with ReDim, or that Erase has released |
-2147467259 (&H80004005), Unspecified error | dimension is less than 1 or greater than the number of dimensions of arrayname, after rounding dimension is greater than 32,767 |
13 (&HD), Type mismatch | arrayname is a Variant that holds no array, Empty and Null included |
94 (&H5E), Invalid use of Null | dimension is Null |
Note BETA 1034
When dimension is less than 1 or greater than the number of dimensions of arrayname, after rounding, VB6 and 64-bit VBA raise error 9 (&H9), Subscript out of range, instead.
Note BETA 1034
When dimension is greater than 32,767, VB6 and 64-bit VBA raise error 6 (&H6), Overflow, instead.
Example
This example uses UBound to return the largest available subscript for the indicated dimension of an array.
Dim Upper As Long
Dim MyArray(1 To 10, 5 To 15, 10 To 20) ' Multidimensional array.
Dim AnyArray(10)
Upper = UBound(MyArray, 1) ' Returns 10.
Upper = UBound(MyArray, 3) ' Returns 20.
Upper = UBound(AnyArray) ' Returns 10.
See Also
- LBound function
- IsArray, IsArrayInitialized functions