分享

Excel 数组下标知识

 康宣华安 2013-10-24

一,数组的下标
在VBA里,一个数组是有一定的大小和维数的,而用来标识数组的这些属性的数字,就叫数组的下标,一般是用括号括起来,写在数组的右边
数组的一般表示方法是:

数组名称(下标1,下标2,下标3.....)

在这里,每一个下标表示一个维度,用逗号分隔,下标个数代表数组维数
VBA数组最多可以定义60个维度,即后面可以跟60个下标
注意:数组是没有“上标”这个概念的

每个下标,都有一定范围,来指示该维度的大小
这个范围靠小的那边,称为这个下标的下界(最小下标);靠大的那边,称为这个下标的上界(最大下标)

下标的表示方式基本上有两种:

1. 单个大于等于0的整数表示下标,这时 

该维的下界(最小下标):默认为0; 
该维的上界(最大下标):这个整数; 
该维的元素的个数:(这个整数+1); 

该数组元素的个数为:各维个数的乘积。 

arr(4) 
——表示这个数组只有一维,下标是4,下界是0,上界是4,数组的元素个数是5 

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)
 Ubound函数返回数组的上界
 Lbound函数返回数组的下界

 Sub aa()
     Dim arr(4)
     MsgBox UBound(arr)
     MsgBox LBound(arr)
     Stop
 End Sub

 

arr(1,2) 
——表示这个数组有两维,第一维下标是1,下界是0,上界是1;第二维下标是2,下界是0,上界是2;该数组的元素个数是(1+1)×(2+1)=6 

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)
 Ubound函数返回数组的上界,后面的参数代表返回第几维
 Lbound函数返回数组的下界,后面的参数代表返回第几维

 Sub bb()
     Dim arr(1, 2)
     MsgBox UBound(arr) & "," & UBound(arr, 2)
     MsgBox LBound(arr) & "," & LBound(arr, 2)
     Stop
 End Sub



arr(1,0,2) 
——表示该数组有三维,第一维下标是1,下界是0,上界是1;第二维下标是0,下界是0,上界是0;第三维下标是2,下界是0,上界是2;该数组的元素个数是(1+1)×(0+1)×(2+1)=6 

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)
 Ubound函数返回数组的上界,后面的参数代表返回第几维
 Lbound函数返回数组的下界,后面的参数代表返回第几维

 Sub cc()
     Dim arr(1, 0, 2)
     MsgBox UBound(arr) & "," & UBound(arr, 2) & "," & UBound(arr, 3)
     MsgBox LBound(arr) & "," & LBound(arr, 2) & "," & LBound(arr, 3)
     Stop
 End Sub



2,以区间表示下标,格式为 :(下界 to 上界),这时

该维的下界(最小下标):下界;
该维的上界(最大下标):上界;
该维的元素的个数:上界-下界+1;

该数组元素的个数为:各维个数的乘积。

arr(1 to 3)
——表示这个数组只有一维,下标是“1 to 3”,下界是1,上界是3,数组的元素个数是(3-1+1)=3

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)
 Ubound函数返回数组的上界,后面的参数代表返回第几维
 Lbound函数返回数组的下界,后面的参数代表返回第几维

 Sub dd()
     Dim arr(1 To 3)
     MsgBox UBound(arr)
     MsgBox LBound(arr)
     Stop
 End Sub



arr(1 to 3,3 to 4, -1 to 1) 
—— 表示该数组有三维,第一维下标是“1 to 3”,下界是1,上界是3;第二维下标是“3 to 4”,下界是3,上界是4;第三维下标是“-1 to 1”,下界是-1,上界是1; 该数组的元素个数是(3-1+1)×(4-3+1)×(1-(-1)+1)=18

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)
 Ubound函数返回数组的上界,后面的参数代表返回第几维
 Lbound函数返回数组的下界,后面的参数代表返回第几维

 Sub ee()
     Dim arr(1 To 3, 3 To 4, -1 To 1)
     MsgBox UBound(arr) & "," & UBound(arr, 2) & "," & UBound(arr, 3)
     MsgBox LBound(arr) & "," & LBound(arr, 2) & "," & LBound(arr, 3)
     Stop
 End Sub



二,数组元素的下标

数组的每个元素,也分别有自己的下标,当声明了一个固定范围的数组后,其每个元素的下标也同时确定了

元素的下标标识了元素在数组中的相对位置,要知道元素的绝对位置,必须要知道该维度的下界是多少,然后用下标减去下界,得出该元素在该维度的绝对位置

元素某维度的绝对位置 = 该维度的下标 - 该维度的下界 + 1

看上面最后一个例子,我们随便抽出一个元素来看,如arr(3,4,0)这个元素

3代表他在第一维的绝对位置是3,因为第一维的下界是1,
4代表第二维的绝对位置是2,因为第儿维的下界为3,
0代表第三维的绝对位置为2,因为第三维的下界是-1


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多