下标越界(VB)

来源:百度知道 编辑:UC知道 时间:2024/05/13 23:55:41
我想试一试LBound()的用法,于是在窗体上画了一个标签Label1和一个命令按扭Command1,想看看Label1中输出的是什么,编写的代码如下:
Private Sub Command1_Click()
Dim arr1
Dim arr2(4) As Integer
arr1 = Array(30, 40, 50, 60)

For i = 1 To 4
arr2(i) = CInt(arr1(i))
Next i
Label1.Caption = LBound(arr1)
End Sub
但是运行时,出现了下标越界的错误,请问应该怎么改呢?谢谢!

Private Sub Command1_Click()
Dim arr1
Dim arr2(0 To 3) As Integer
arr1 = Array(30, 40, 50, 60)

For i = 0 To 3
arr2(i) = CInt(arr1(i))
Next i
Label1.Caption = LBound(arr1)
End Sub

因为用Array定义的数组第一个元素下标是0,你1 to 4 当然下标越界

LBound函数

返回一个 Long 型数据,其值为指定数组维可用的最小下标。

语法

LBound(arrayname[, dimension])

LBound 函数的语法包含下面部分:

部分 描述
arrayname 必需的。数组变量的名称,遵循标准的变量命名约定。
dimension 可选的;Variant (Long)。指定返回哪一维的下界。1 表示第一维,2 表示第二维,以此类推。如果省略 dimension,就认为是 1。

说明

LBound 函数与 UBound 函数一起使用,用来确定一个数组的大小。UBound 用来确定数组某一维的上界。

对具有下述维数的数组而言,LBound 的返回值见下表:

Dim A(1 To 100, 0 To 3, -3 To 4)

语句 返回值
LBound(A, 1) 1
LBound(A, 2) 0
LBound(A, 3) -3

所有维的缺省下界都是 0 或 1,这取决于 Option Base 语句的设置。使用 Array 函数创建的数组的下界为 0;它不受 Option Base 的影响。

对于那些在 Dim 中用 To 子句来设定维数的数组而言,Private、Public、ReDim 或 Static 语句可以用任何整数作