VBA 二维数组

二维数组相当于表格数据。第1维相当于行,第2维相当于列。


1 声明语法

Dim 数组变量名称(第1维最大下标,第2维最大下标) As 元素数据类型

声明时小括号内两个下标用逗号隔开。


2 访问元素

数组变量名称(第1维下标,第2维下标)

3 示例

4名学生3门课程的成绩如下。

学生序号 语文成绩 数学成绩 英语
1 81 82 83
2 91 92 93
3 71 72 73
4 61 62 63

通过数组存储。

Sub array12()
  Dim scoreArr(3, 2) As Integer

  '第1名同学的3项成绩
  scoreArr(0, 0) = 81
  scoreArr(0, 1) = 82
  scoreArr(0, 2) = 83

  '第2名同学的3项成绩
  scoreArr(1, 0) = 91
  scoreArr(1, 1) = 92
  scoreArr(1, 2) = 93  

  '第3名同学的3项成绩
  scoreArr(2, 0) = 71
  scoreArr(2, 1) = 72
  scoreArr(2, 2) = 73

  '第4名同学的3项成绩
  scoreArr(3, 0) = 61
  scoreArr(3, 1) = 62
  scoreArr(3, 2) = 63

End Sub

4 获取二维数组的最大下标

二维数组的下标的获取方法:

LBound(arr , i) 

数组arr第i维的最小下标。

UBound(arr , i) 

数组arr第i维的最大下标。


示例

 '获取下标
  '第1维的最大下标
  Debug.Print UBound(scoreArr, 1) '输出 3
 
  '第1维的最小下标
  Debug.Print LBound(scoreArr, 1) '输出 0

  '第2维的最大下标
  Debug.Print UBound(scoreArr, 2) '输出 2
  '第2维的最小下标
  Debug.Print LBound(scoreArr, 2) '输出 0

5 遍历二维数据

示例

 For i = LBound(scoreArr, 1) To UBound(scoreArr, 1)
    For j = LBound(scoreArr, 2) To UBound(scoreArr, 2)
      Debug.Print i & "," & j & "=" & scoreArr(i, j), ;
    Next
    Debug.Print
  Next

输出结果

0,0=81    0,1=82    0,2=83    
1,0=91    1,1=92    1,2=93    
2,0=71    2,1=72    2,2=73    
3,0=61    3,1=62    3,2=63