UBound
 
返回数组维度的上限

语法

DeclareUBound(array()AsAnyByValdimension AsInteger= 1)AsInteger

用法

result = UBound( array [, dimension ] )

参数

array
任何类型的数组
dimension
得到上限的维度

返回值

返回数组维度的上限。

说明

UBound返回可用作数组特定维度的索引的最大值。

阵列尺寸从一个(1 )编号到n ,其中n 是总维度数。如果未指定dimension ,则UBound将返回第一个维度的上限。

如果dimension 为零(0),UBound返回n 阵列中的维数。对于超出有效范围1 .. n 之外的任何其他dimension ,结果为-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 "数组中的元素数:", arraylen    '10
Print "数组中使用的字节数:", 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 "数组中的元素数:", arraylen    '2 * 3 * 4 * 5 = 120
Print "数组中使用的字节数:", arraysize '120 * 4 = 480


''确定数组是否为空
Dim array() As Integer

Print "LBOUND:"; LBound( array ), "UBOUND:"; UBound( array )  ''1和0

If LBound( array ) > UBound( array ) Then
    Print "数组为空"
Else
    Print "数组不为空"
End If


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

    ''对于每个维度...
    For d As Integer = LBound( array, 0 ) To UBound( array, 0 )
        Print "尺寸" & 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() )


参考