Excel-VBA基础(11):VBA中数组基础知识

01 数组的声明


数组是VBA的变量,具有一群相同类型的成员,可以利用数组名和索引值进行访问。数组的声明与一般变量的声明一样,可以用Dim、Static、Private或Public语句来声明,在数组名后使用括号“()”,在括号中放置整数,定义数组包含的项目数。例如:

Sub Sample23()
Dim sArray(3) As String '定义数组sArray具有4个项目
sArray(0) = "黄蓉蓉"
sArray(1) = "女"
sArray(2) = "北京市朝阳区"
sArray(3) = "大学本科"
End Sub

数组中项目数的多少是以操作系统有多少可用内存为基础,若使用的数组大小超过了系统中可用内存总数,则速度会变慢,因为必须从磁盘中读写数据。

02 数组的基底

默认情况下数组的基底是0,即数组的最小索引的项目从0开始,例如sArray(3)代表sArray数组有4个项目,若是希望数组的基底是1,则可以在程序的开始(过程之外)用以下代码声明:

Option Base 1

这时程序语句“sArray(0) = "黄蓉蓉"”就是非法的,运行时会提示下标越界。

03 具有多重维度的数组


在VBA中最多可以声明60维的数组,但实际应用中很少用到超过3维的数组。例如,下列的语句声明一个5乘10的2维数组。

Dim sngArray1(1 To 5, 1 To 10) As Single

如果数组成矩阵,则第一个参数代表行,而第二个参数代表列,例如:

Dim sngArray1(4, 9) As Single

可以代表4行9列的矩阵。

04 固定大小数组


若数组中括号内的整数大小被指定,则它是个固定大小数组。
例如声明2维,行和列都是10个项目的数组,就是个固定大小数组:


Dim sArray1(9, 9) As String

05 动态数组

若程序运行时数组的大小可以被改变,则它是个动态数组。
可以利用Static、Dim、Private或Public语句来声明数组,并使括号内为空。
每当需要时,可以使用ReDim语句去更改动态数组。然而当做这个动作时,数组中存在的值会丢失。若要保存数组中原先的值,则可以使用ReDim Preserve语句来扩充数组。例如,下列的语句将varArray数组扩充了6个项目,而原本数组中的项目数值并没有被冲消。

ReDim sArray(UBound(sArray) + 6) As String

当对动态数组使用Preserve关键字时,只可以扩大最后维数的项目数量,而不能改变维数的数目。完整示例如下:

Sub Sample232()
Dim sArray() As String '定义动态数组
ReDim sArray(3) As String '第一次定义动态数组的项目数
sArray(1) = "女"
sArray(2) = "北京市朝阳区"
sArray(3) = "大学本科"
'第二次定义动态数组的项目数,保留数组中原有项目的数值
ReDim Preserve sArray(UBound(sArray) + 1) As String
MsgBox sArray(1)
'第三次定义动态数组的项目数,保留数组中原有项目的数值
ReDim sArray(UBound(sArray) + 6) As String
MsgBox sArray(1)
End Sub

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值