excel_vba_编程教程(完整版)-第46章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
另外,对于动态数组,Erase函数将重新分配原来分配给该数组的所有内存。下面的例子教你如何
删除数组cities里的数据。
1。 在当前工程里插入一新模块,重命名为Erase_Function
2。 输入如下过程FunCities:
' start indexing array elements at 1
Option Base 1
Sub FunCities()
'declare the array
Dim cities(1 to 5) As String
'assign the values to array elements
cities(1) = 〃Las Vegas〃
cities(2) = 〃Orlando〃
cities(3) = 〃Atlantic City〃
cities(4) = 〃New York〃
cities(5) = 〃San Francisco〃
'display the list of cities
MsgBox cities(1) & Chr(13) & cities(2) & Chr(13) _
& cities(3) & Chr(13) & cities(4) & Chr(13) _
& cities (5)
Erase cities
'show all that was erased
MsgBox cities(1) & Chr(13) & cities(2) & Chr(13) _
& cities(3) & Chr(13) & cities(4) & Chr(13) _
& cities (5)
End Sub
在函数Erase清除数组里的数据后,函数MsgBox就显示一个空信息框了。
12。LBound 函数和 UBound 函数
LBound函数和UBound函数分别返回表明数组的下界和上界的数字。
1。 在当前工程里插入模块,命名为L_and_UBound_Function
2。 输入如下代码FunCities2:
Sub FunCities2()
'declare the array
Dim cities(1 to 5) As String
'assign the values to array elements
cities(1) = 〃Las Vegas〃
cities(2) = 〃Orlando〃
cities(3) = 〃Atlantic City〃
cities(4) = 〃New York〃
cities(5) = 〃San Francisco〃
'display the list of cities
131
… 页面 148…
MsgBox cities(1) & Chr(13) & cities(2) & Chr(13) _
& cities(3) & Chr(13) & cities(4) & Chr(13) _
& cities (5)
'display the array bounds
MsgBox 〃The lower bound: 〃 & LBound(cities) & Chr(13) _
& 〃The upper bound: 〃 & UBound(cities)
End Sub
当你要确定一个二维数组的上下界时,你就必须明确维数:1表示第一维,2表示第二维。
在本章早先时候将的Exchange过程里的后面加上如下语句,可以确定该二维数组的上下界(将下列
代码加入到关键字End Sub之前):
MsgBox 〃The lower bound (first dimension) is 〃 _
& LBound(Ex; 1) & 〃。〃
MsgBox 〃 The upper bound(first dimension) is 〃 _
& UBound(Ex; 1) & 〃。〃
MsgBox 〃The lower bound (second dimension) is 〃 _
& LBound(Ex; 2) & 〃。〃
MsgBox 〃 The upper bound(second dimension) is 〃 _
& UBound(Ex; 2) & 〃。〃
13。数组中的错误
使用数组时,出错是很容易的。如果你试图给数组赋予比声明数组时更多的成员的话,VBA就会显
示错误信息“下标越界”
图7…4 该错误出现于试图访问并不存在的数组成员
假设你声明了一个包含6个成员的一维数组,而你却试图给第八个成员赋值,当你运行该过程时,
VB无法找到第八个成员,所以显示错误信息。点击调试按钮,VB将导致错误的代码行(见图7…5)
加亮。检查数组的声明语句,并且更改被加亮代码行括号里的索引号。
“下标越界”错误经常是由使用循环的过程引发的。下面的过程Zoo1就是这种情况的一个例子。在
用户取消在输入框里输入数据之前,循环里的语句反复被执行。在执行该过程时,当变量 i 等于4
的时候,VB无法在这个只有三个成员的数组里找到第四个成员,那么错误信息就出现了。修改后的
过程Zoo2示范了前面章节里介绍的LBound和UBound函数如何能够避免试图访问不存在的数组成员
的错误。
132
… 页面 149…
图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