一、数组
1.1. 初始值数组
这种数组在创建的同时就需要把元素填充好,比较适合元素内容不多、已知、固定时使用,其语
法为: 变量 = Array(元素1, 元素2, 元素n)
,然后通过元素坐标来访问数组中的元素,坐标从 0 开始计算,
既第一个元素的坐标是 0 ,第二个元素坐标是 1,第三个元素坐标是2 ,以此类推
示例代码
Sub main()
'定义初始值数组
Dim items
items = Array(1, 2, 3, 4, 5)
'访问数组中坐标为2的元素,既元素值3
Debug.Print items(2)
End Sub
1.2. 静态数组
这种一般用在元素内容无法确定,需要后期填充,但元素数量确定的场景,有两种定义语法:
- 通过
Dim 变量名(终点坐标)
定义,这种定义方式起始坐标默认是 0 - 通过
Dim 变量名(起始坐标 To 终点坐标)
定义,这种定义方式自己指定起点和终点坐标
示例代码
Sub main()
'起始坐标默认为0
Dim items(5)
items(0) = 1
items(1) = 2
items(2) = 3
items(3) = 4
items(4) = 5
Debug.Print items(2)
'自定义起始坐标
Dim items2(1 To 5)
items2(1) = 1
items2(2) = 2
items2(3) = 3
items2(4) = 4
items2(5) = 5
Debug.Print items2(2)
End Sub
1.3. 动态数组
这种一般用在元素内容和元素长度都不确定的场景,先用 Dim 变量名()
声明数组,然后当数组长度确定时,在通过
ReDim 变量名(起始坐标 To 终点坐标)
来设置数组长度
示例代码
Sub main()
Dim items()
ReDim items(1 To 5)
items(1) = 1
items(2) = 2
items(3) = 3
items(4) = 4
items(5) = 5
Debug.Print items(2)
End Sub
1.4. 二维数组
二维数组对于学习 vba 来说非常重要,既然学习 vba 的目的是为了扩展 Excel 的功能,那么就肯定避免不了和
单元格打交道,而 vba 中,很多选取单元格的函数,都是以二维数组的形式返回的
二维数组非常好理解,其本质就是数组的元素仍是数组,一般习惯将第一维中的每个元素称作行,第二维中的每个
元素称作列,一个三行三列的二维数组的结构大概如下图:
定义二维数组时要指定两个长度 :
- 第一维数组的长度,既数组有几行
- 每个二维数组的长度,既每行中有几列
其定义语法为: Dim 变更名( 一维数组起始坐标 To 一维数组终点坐标, 二维数组起始坐标 To 二维数组终点坐标)
示例代码
一个两行三列的数组,注意:二维数组在填充和取值时,要定位到列的坐标:
Sub main()
'定义两行三列的二维数组
Dim items(1 To 2, 1 To 3)
'为二维数组赋值
For x = 1 To 2
For y = 1 To 3
items(x, y) = x + y
Next y
Next x
'二维数组取值, 第一行第一列的值
Debug.Print items(1, 1)
End Sub
1.4.1. 单元格与二维数组
选取 Excel 中的单元格并赋值给二维数组,或将二维数组赋值到单元格都是 vba 开发中常见的操作
例1:选取三行三列的单元格到二维数组中
代码:
Sub main()
Dim items
items = Range("