贝壳电子书 > 基础科学电子书 > excel_vba_编程教程(完整版) >

第46章

excel_vba_编程教程(完整版)-第46章

小说: excel_vba_编程教程(完整版) 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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 

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的