一,数组的下标
在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