数组

数组是变量的一种,是同一类型变量的集合,与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:

如果是二维的,在选择显示区域时对应大小就行,行列数一致。

原文地址:https://www.cnblogs.com/rhongp/p/6383744.html