数组
数组是变量的一种,是同一类型变量的集合,与C语言啊里面的数组相似。
注意几点:数组名,数组长度,数据类型,索引,变量
声明数组和赋值
数组声明中要写清楚数组的长度(大小),
Public(Dim)数组名 (a to b) As 数据类型; :Public和Dim针对不同的作用域,“a to b”指定数组的长度,编号从a开始。
或者可以直接说明数组大小:Public(Dim)数组名 (n) As 数据类型;
n代表数组大小(长度),此时编号从0开始
若在模块第一句写上“Option Base 1”,则编号从1开始
给数组赋值即是对数组中的元素赋值,直接数组名+组内编号=内容;
Eg:声明一个存放成绩的数组,1到6分别对应6门学科,给语数外三科赋值112、134和126分:(事实证明我记错单词了,成绩分数的单词应该是score,请自行纠正)
Sub test()
Dim course1(1 to 6) As Byte
Course1(1)=112
Course1(2)=134
Course1(3)=126
End Sub
或者Dim course1(5)As Byte
其规则和普通变量赋值相似,日期和文本。
数组的维数
VBA中数组同样有2维、3维和多维,和编程语言中的相似。(可以想象成很多层的数据存放,一维即使一行或者一列,二维类似表格,三维接近立方体,多维可以参考文件夹形式)
在声明的时候,只需在数组长度添加其他维即可:
Eg:Dim course2(1 to 20,1 to 6) As Byte
或者Dim course2(19,5)As Byte
为声明一个二维的用于分别存储20名学生的6科成绩的数组;
赋值和一维数组一样;
Eg:course2(4,5)=87
表明第4名学生的第5门学科得分87;
声明动态数组
可以在定义数组时不说明数组长度,括号内容为空,然后在程序中使用ReDim语句重新制定大小,且不能改变已定义了的数组类型(若定义类型为Variant型,在一些情况下可以改变,这个以后再讨论)
Eg:
这里的Application.WorksheetFunction是VBA引用excel函数的的格式,Application代表当前Excel运行的程序,WorksheetFunction代表调用当前Excel程序里的函数,此时我调用的counta(用来统计非空单元格的数量)函数。
其他生成数组的方法:(不详说)
利用Array函数、Split函数、Range对象生成。详细的自行查找学习。
几个数组相关函数
UBound和LBound:分别用于计算数组的最大索引号和最小索引号。
这里注意,索引号指的数组元素的编号,和数组定义里边的(a to b)相关,比如定义时(13to 23),索引编号从13开始,而数组大小是指的元素个数,不是看编号。
Eg:
Dim a As Byte,b As Byte
a=UBound(course1)
b=LBound(course1)
如多是多维的,需要指定维数分开计算。
不过由于我还不知道乘法计算,先这样展示。可以先计算出来再展示,我就偷懒了。
Join函数:将一个一位数组里的元素使用指定的分隔符连接成一个新的字符串
Eg:
(记住是分隔不是组合,所以最后一只没有羊)
将数组写入单元格:
有了数组数据的录入和存储,还需要将数据和结果进行展示;除了上边的用MsgBox进行展示,还有将数据在单元格中进行展示。
结合之前的单元格赋值:
Range(“A1”).Value=值,A1代表单元格位置;
Eg:
如果是二维的,在选择显示区域时对应大小就行,行列数一致。