=============================================================
====================
|| 版本号:Excel2013. ||
====================
VBA中的数组是什么样的呢?本篇详细介绍一下。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
声明数组
一般来说声明数组的语法为:Public|Dim 数组名 (a to b) As 数据类型
注意:(1)Public和Dim只能选一个,为不同的作用域。
(2)a为数组元素的起始索引号,b为终止索引号。
例如:Dim attr (1 to 20) As String也可以这样子声明,如下:
Dim attr(20) As String注意:此时则索引号是从0开始,终止号为20
声明动态数组
声明动态数组很简单,只要不指定大小即可,然后在后面可以使用ReDim再来指定大小。如下:
Dim attr() As String n = 20 ReDim attr(20) As String注:已经定义好大小的数组,也可以使用ReDim来重新指定它的大小。
声明多维数组
例如:
Dim attr(1 to 3,1 to 10) As String或者如下:
Dim attr(3,10) As String此时索引号默认为0,除非在模块第一句代码加上”OPTion Base 1"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
给数组赋值
使用括号来给数组的每个元素赋值,例如:attr(20)="你好"
则是将attr中索引号为20的元素赋值
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其他创建数组的方式
还可以使用其他方式来更加灵活的创建数组
使用Array函数创建数组
如下:
Dim attr As Variant attr = Array(1,2,3,4,5)注:(1)使用Array创建数组,定义变量时必须为Variant类型。
(2)索引号默认从0开始,除非已经在模块的第一句中写入了代码”OPTion Base 1"
使用Split函数创建数组
如下:
Dim attr As Variant attr = Split("高女士,王先生,付同学",",")注:(1)变量类型必须为Variant。
(2)无论是否在模块中写入代码“OPTion Base 1",利用Split得到的数组索引号都从
0开始。
利用Range对象直接创建数组
如下:
Dim attr As Variant attr = Range("A1:C3").Value注:定义类型必须为Variant
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
UBound函数和LBound函数
UBound函数用于计算数组的最大索引号:UBound(attr)
LBound函数用于计算数组的最小索引号:LBound(attr)
当然对于多维数组要选择相应的维数来计算:UBound(attr,2)
那么数组中元素的个数为:UBound(attr)-LBound(attr)+1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Join函数
Join函数就是将一个一维数组中的按照指定的分隔符连接成一个字符串,如下:
Dim attr As Variant,txt As String attr = Array(1,2,3,4) txt = Join(attr,"@")那么txt就为“1@2@3@4"
注:Join函数中分隔符可以省略,此时默认使用空格进行分割。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
将数组里的元素批量写入单元格区域
如下:
Dim arr As Variant arr = Array(1,2,3,4) Range("A1:A4").Value = A(arr)注:(1)将一个数组整个写入单元格区域,要注意大小一致。
(2)如果写入的是垂直的方向,则需要借助Transpose进行转换一下!
再举一个正常点的例子吧,如下:
Dim arr(1 To 2,1 To 3) As String arr(1,1)="1" arr(1,2)="2" arr(1,3)="3" arr(2,1)="4" arr(2,2)="5" arr(2,3)="6" Range("A1:C3").Value=arr=============================================================