使用Array函数创建数组:
一维数组
如果将一组已知的数据常量存储到数组中,使用VBA中的Array函数。 使用Array函数创建数组,该数组应声明为一个Variant类型的变量。
Array函数的参数是一个用英文逗号(,)隔开的数据列表(文本需写在英文半角双引号间),参数中有几个数据,得到的数组就有几个元素,如果不设置参数,函数返回的是一个不包含数据的空数组。
如:
Sub ArrayTest()
Dim arr As Variant
arr=Array(1,2,3,4,5,6,7,8,9,10)
MsgBox "arr数组的第2个元素为:" & arr(1)
End Sub
使用Array函数创建的数组索引号默认从0开始,除非已经在模块第1句写入了 "OPTION BASE 1"语句。如下:
Option Base 1 #声明数组索引号从1开始 语句
Sub a()
Dim arr As Variant
arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
MsgBox "arr数组的第2个元素为:" & arr(1)
End Sub
二维数组 (行,列)
二维数组不用Array函数创建,用关键字[ ],{},数组赋值语句如下:
Sub a()
dim arr() as variant
arr = [{1, "陈达文" ; 2, "杨帆" ; 3, "李宗伟" }]
msgbox arr(1,1) #注:二维数组的索引号均从1开始,无论是单元格区域赋值还是直接语句赋值,均从1开始,不从0开始,注意!
End Sub
结果:
1
注:二维数组的索引号均从1开始,无论是单元格区域赋值还是直接语句赋值,均从1开始,不从0开始,注意!
三维数组 (张,行,列)
三维数组一般用到的较少,具体的赋值创建方法如下:
Dim arr(),i& #&为长整型的替代符
ReDim arr(1 to sheets.count)
For i=1 To Sheets.Count
arr(i)=Sheets(i).Range("A2:D5")
Next
使用Split函数创建数组
如果要将一个字符串按指定的分隔符拆分,将各部分结果保存到一个数组中,可以使用VBA中的Split函数。
Sub SplitTest()
Dim arr As Variant
arr=Split("叶枫,空空,小月,老祝",",")
MsgBox "arr数组中的第2个元素是:" & arr(1) #无论是否在模块中写入"OPTION BASE 1",Split函数返回数组的索引号都是从0开始。
End Sub
Split函数返回的总是一个索引号从0开始的一维数组。
通过单元格区域直接创建数组
如果想把单元格区域中保存的数据直接存储到一个数组中,可以通过直接赋值的方法解决。(注:二维数组及以上,索引均从1开始。)
Sub RngArr()
Dim arr As Variant #存储数据的数组应定义成一个Variant类型的变量
arr=Range("A1:C3").Value
Range("E1:G3").Value=arr #将数组中保存的数据写入单元格区域时,单元格区域的行列数必须与数组的维数相同。
End Sub