四时宝库

程序员的知识宝库

Excel VBA之数组的知识大总结,帮你理清条理

=============================================================

====================

|| 版本号: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 = Application.WorksheetFunction.Transpose(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

=============================================================

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接