UBound

Returns the upper bound of an array's dimension

Syntax
   Declare Function UBound ( array() As Any, ByVal dimension As Integer = 1 
   ) As Integer

Usage
   result = UBound( array [, dimension ] )

Parameters
   array
      an array of any type
   dimension
      the dimension to get upper bound of

Return Value
   Returns the upper bound of an array's dimension.
 
Description
   UBound returns the largest value that can be used as an index into a 
   particular dimension of an array.

   Array dimensions are numbered from one (1) to n, where n is the total 
   number of dimensions. If dimension is not specified, UBound will return 
   the upper bound of the first dimension.

   If dimension is zero (0), UBound returns n, the number of dimensions in 
   the array. For any other dimension values outside of the valid range 1..
   n, the result is -1. This can be used to detect the number of dimensions 
   of variable-length arrays, and in combination with the result of 
   Lbound() for such cases, whether a given dimension exists, or whether 
   the array is empty (zero dimensions). See the LBound page for more 
   information.

Example

   Dim array(-10 To 10, 5 To 15, 1 To 2) As Integer

   Print UBound(array) 'returns 10
   Print UBound(array, 2) 'returns 15
   Print UBound(array, 3) 'returns 2

   '' determining the size of an array
   Dim As Short array(0 To 9)
   Dim As Integer arraylen, arraysize

   arraylen = UBound(array) - LBound(array) + 1
   arraysize = arraylen * SizeOf( Short )

   Print "Number of elements in array:", arraylen    '10
   Print "Number of bytes used in array:", arraysize '10 * 2 = 20 

   '' determining the size of a multi-dimensional array
   Dim As Long array4D(1 To 2, 1 To 3, 1 To 4, 1 To 5)
   Dim As Integer arraylen, arraysize

   arraylen = (UBound(array4D, 4) - LBound(array4D, 4) + 1) _
          * (UBound(array4D, 3) - LBound(array4D, 3) + 1) _
          * (UBound(array4D, 2) - LBound(array4D, 2) + 1) _
          * (UBound(array4D, 1) - LBound(array4D, 1) + 1)

   arraysize = arraylen * SizeOf( Long )

   Print "Number of elements in array:", arraylen    '2 * 3 * 4 * 5 = 120
   Print "Number of bytes used in array:", arraysize '120 * 4 = 480

   '' determining whether an array is empty
   Dim array() As Integer

   Print "lbound: "; LBound( array ), "ubound: "; UBound( array )  ''  0 and -1

   If LBound( array ) > UBound( array ) Then
      Print "array is empty"
   Else
      Print "array is not empty"
   End If

   Sub printArrayDimensions( array() As Integer )
      Print "dimensions: " & UBound( array, 0 )

      '' For each dimension...
      For d As Integer = LBound( array, 0 ) To UBound( array, 0 )
         Print "dimension " & d & ": " & LBound( array, d ) & " to " & UBound( array, d )
      Next
   End Sub

   Dim array() As Integer
   printArrayDimensions( array() )

   Print "---"

   ReDim array(10 To 11, 20 To 22)
   printArrayDimensions( array() )

See also
   * LBound
   * Static
   * Dim
   * ReDim
   * SizeOf

