建议阅读本篇前,先复习一下
Excel VBA(6) – 声明变量那些事
什么是数组?
数组的特性
声明数组
给数组赋值
什么是多维数组
声明多维数组
动态数组
如何创建数组?
Array 函数
Split 函数
Range 对象
判断及清空数组
数组的最大最小索引号
如何将数组写入单元格
1. 什么是数组?
数组就是一个列表或一组数据表
是同类型多个变量的集合
2. 数组的特性
数组中的元素共享一个数组名
数组中的元素按顺序存储在数组中,以索引号区分
3. 声明数组
Public / Dim 数组名 (a to b) As 数据类型
Public 和 Dim 二选一,作用域不同
如果括号内只使用一个自然数,则默认起始号是 0
例如,Dim Arr (15) As String,表示数组元素为 0 到 15
如果只写一个自然数,又希望从 1 起始,可以在模块的第一句写入 'Option Base 1'
4. 给数组赋值
示例 1:
Sub number
Dim arr (1 to 5) As Integer
arr(1) = 1
arr(2) = 2
arr(3) = 3
arr(4) = 4
arr(5) = 5
End Sub
示例 2:
Sub number
Dim arr (1 to 5) As Integer, i As Integer
For i = 1 to 5
arr(i) = i
Next
End Sub
5. 什么是多维数组
多维数组是包含多个列表或多组数据表的数组
6. 声明多维数组
Public / Dim 数组名 (a to b, c to d) As 数据类型
不同维度之间用 “,” 隔开
7. 动态数组
声明数组时,如果不确定数组大小,可以设置为动态数组
动态数组格式为:
Dim 数组名称
需要的时候,可以用 ReDim 语句指定动态数组大小
定义动态的数组首先要声明,Dim arr,然后用ReDim命令来设置数组的大小:
ReDim 数组名称 (a to b) As 数据类型
静态数组同样可以用 ReDim 命令重新设置大小
8. 如何创建数组?
A. Array 函数
如果用 Array 函数创建数组,定义变量时,变量类型必须为 Variant 类型
数组索引号默认从 0 开始,除非在模块第一句中写入了'Option Base 1'
示例:
Sub 月份
Dim arr As Variant
arr = Array(1,2,3,4,5,6,7,8,9,10,11,12)
End Sub
B. Split 函数
Split 把文本字符串按照指定的分隔符分开,返回一个一维数组
无论是否写入'Option Base 1',Split 函数定义的数组最小索引号都是 0
示例:
Sub 月份
Dim arr As Variant
arr = Split ('1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月',',') '标红的第2个参数将分隔符定义为','
End Sub
C. Range 对象
Range 对象可以把单元格区域的值赋值给变量
单元格区域的大小必须与数组大小相同
示例:
Sub RngArr
Dim arr As Variant
arr = Range ('A1:C2').Value '将 A1:C2 单元格的值指定给变量 arr
Range ('E1:G2').Value = arr '将变量 arr 的值写入 E1:G2 单元格
End Sub
9. 判断及清空数组
A. IsArray 函数
IsArray(variablename)
判断指定的输入变量是否是数组变量
数返回一个布尔值
B. Erase 函数
Erase ArrayName
固定数值数组,数组中的每个元素重置为零
固定字符串数组,数组中的每个元素被重置为零长度 ''
对象数组,数组中的每个元素被重置为特殊值 Nothing
10. 数组的最大最小索引号
UBound 和 LBound 函数分别可以计算数组的最大和最小索引号
格式如下:
UBound (arr)
LBound (arr)
11. 如何将数组写入单元格
使用 Range 对象
示例:
Sub 月份
Dim arr As Variant
arr = Array(1,2,3,4,5,6,7,8,9,10,11,12)
Range ('A1:A12').Value = Application.WorksheetFunction.Transpose (arr) ' 数组写入单元格的时候,都是横向按行写入的,如果要竖向按列写入,需要用 Transpose 函数行列转换一下
End Sub
联系客服