数组学习系列1-VBA数组中的常见错误(6)
使用数组时,出错是很容易的。如果你试图给数组赋予比声明数组时更多的成员的话,VBA就会显示错误信息“下标越界”。

图7-4 该错误出现于试图访问并不存在的数组成员
假设你声明了一个包含6个成员的一维数组,而你却试图给第八个成员赋值,当你运行该过程时,VB无法找到第八个成员,所以显示错误信息。点击调试按钮,VB将导致错误的代码行(见图7-5)加亮。检查数组的声明语句,并且更改被加亮代码行括号里的索引号。“下标越界”错误经常是由使用循环的过程引发的。下面的过程Zoo1就是这种情况的一个例子。在用户取消在输入框里输入数据之前,循环里的语句反复被执行。在执行该过程时,当变量 i 等于4的时候,VB无法在这个只有三个成员的数组里找到第四个成员,那么错误信息就出现了。修改后的过程Zoo2示范了前面章节里介绍的LBound和UBound函数如何能够避免试图访问不存在的数组成员的错误。

图7-5 当你点击错误信息的调试按钮,VB就会加亮引发错误的语句
1.在当前工程里插入新模块,命名为Errors_In_Arrays
2.输入下列过程Zoo1和Zoo2:
Sub Zoo1()
'this procedure triggers an error "Subscript out of range" 本过程引发“下标越界”错
误
Dim zoo(3) As String
Dim i As Integer
Dim response As String
i = 0
Do
i = i +1
response = InputBox("Enter a name of animal:")
zoo(i) = response
Loop until response = ""
End Sub
Sub Zoo2()
'this procedure avoids the error "Subscript out of range"本过程避免“下标越界”错误
Dim zoo(3) As String
Dim i As Integer
Dim response As String
i = 1
Do While i>=LBound(zoo) And i <=UBound(zoo)
response = InputBox("Enter a name of animal:")
If response = "" Then Exit Sub
zoo(i) = response
i = i + 1
Loop
For i = LBound(zoo)
