UBound
 
Возвращает верхнюю границу размерности массива

Синтаксис

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

Использование

result = UBound( array [, dimension ] )

Параметры

array
массив любого типа
dimension
размерность для получения верхней границы

Возвращаемое значение

Возвращает верхнюю границу размерности массива.

Описание

UBound возвращает наибольшее значение, которое может использоваться в качестве индекса в определенной размерности массива.

Размерности массива нумеруются от одного (1) до n, где n - общее количество измерений. Если dimension не указывается, UBound возвращает верхнюю границу первого измерения.

Если dimension - нуль (0), UBound возвратит n, количество измерений в массиве. Для любых других значений dimension вне допустимого диапазона 1..n, возвращает -1. Это может использоваться для получения количества измерений массивов переменной длины и в сочетании с результатом Lbound() для определения существования данной размерности, или определения пустого массива (нулевой размер). Смотрите страницу LBound для получения дополнительной информации.

Пример


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

Print UBound(array) 'возвратит 10
Print UBound(array, 2) 'возвратит 15
Print UBound(array, 3) 'возвратит 2


'' определения размера массива
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 


'' определения размера многомерного массива
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


'' определении того, является ли массив пустым
Dim array() As Integer

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

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 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() )


См. также