一 什么是VBA数组
数组可以大大节省系统运算时间,提高效率。数组就是储存一组数据的数据空间,数据类型可以是数字,可以是文本也可以是对象,也可以是VBA数组。
二 VBA数组的存在形态
VBA数组是以变量形式存放的一个空间,它也有行有列,也可以是三维空间。
1 常量数组
array(1,2)
array(array(1,2,3),array("a","b","c"))
2 静态数组
常量数组是一个教室,已经有四个人坐在教室,静态数组是有一个教室,但是并没有人坐在教室里。
2.1 单维数组
x(4) ‘有五个位置,编号从0到4
arr(1 to 10) '有10个位置,编号从1到10
2.2 二维数组
arr(1 to 10,1 to 2) '十行两列的空间,总共20个位置,这是二维数组
2.3 三维数组
三维数组应用并不广泛。
arr(1 to 10,1to 2, 1 to 3) '三维数组,总共10*2*3 = 60 个位置。
3 动态数组
arr() ’不知道有多少行多少列
三 数组写入数据
1 按编号写入和读取
1.1 写入一维数组
Sub t1()
Dim x As Integer
Dim arr(1 To 10) ‘十个座位的数组
For x = 1 To 7
arr(x) = x * 10
Next x
Stop
End Sub
Sub t1()
Dim x As Integer
Dim arr(1 To 10)
For x = 1 To 7
arr(x) = x * 10
Next x
arr(4) = 234
Stop
End Sub
1.2 二维数组写入数据
Sub t2()
Dim x As Integer, y As Integer
Dim arr(1 To 5, 1 To 4)
For x = 1 To 5
For y = 1 To 4
arr(x, y) = Cells(x, y)
Next y
Next x
Stop
End Sub
2 动态数组
写入分为两步,第一步声明一个不固定大小的数组,第二步在已经知道数组大小的情况下再重新声明一下。
Sub t3()
Dim arr()
Dim row
row = Sheets("第二十讲").Range("a65536").End(xlUp).row - 1
ReDim arr(1 To row)
For x = 1 To row
arr(x) = Cells(x, 1)
Next x
Stop
End Sub
原始表格图如下
3 批量写入
批量写入可以由常量数组导入,或者由单元格区域导入
Sub t4()
Dim arr()
arr = Array(1, 2, 3, "a") ’由常量数组导入
Stop
End Sub
Sub t5()
Dim arr
arr = Range("a1:a5") ‘由单元格区域导入
Stop
End Sub