VBA数组(二)声明数组

论坛 期权论坛 期权     
Excel和Access学习笔   2019-6-9 21:27   2634   0

大家好,上节介绍了数组的维度,索引号、上界和下界的知识,本节继续介绍数组的基础知识,包括数组的分类,以及如何声明数组。关于数组的内容相对抽象,会尽量介绍详尽。


一、数组的分类

1、按维度划分

在上节中已经具体的介绍了VBA数组维度的概念。那么可以通过维度来划分数组,在VBA中数组供支持最大60维的数组,最常用的就是一至三维数组。超过三维的数组不是特殊情况很少涉及。
数组的维度在使用前即根据需要确定,后面介绍声明数组时会说明。

2、按是否固定大小分

在使用数组之时,根据声明数组时数组的大小是否先固定,可以划分为静态数组和动态数组。
如果声明数组时即确定数组大小即为静态数组。
如果在声明数组不确定数组的大小,先不固定数组的大小,而在程序在运行时使用Redim语句重新定义数组大小即为动态数组。
两种数组的具体声明和使用方法,后面会进行详细介绍。


二、声明数组

在使用变量时,都需要先声明变量,同样在使用VBA数组时,首先也要声明数组,让系统在内存中为它分配一片连续的内存空间。
声明数组时就需要明确是声明的是动态数组还是静态数组,以及声明数组的名称、数组的维度和数据类型等内容。
声明数组的语句和声明变量语句一样,包括有Dim(过程级变量)、Private(声明模块级变量)、Public(声明工程级变量)和Static(声明静态变量)语句来声明。
最常用得到就是Dim语句声明数组,下面按不同的分类来说明和举例。首先是最简单的静态一维数组,均以Dim语句声明过程级数组为例。

1、声明静态一维数组:

Dim 数组名(第1维上界) as 数据类型
声明语句中只有第一维上界时,实际是省略下界,默认的数组的下界为从0开始。也可以由用户自定义下界和上界的数值,具体语句形式如下。
Dim 数组名(第1维下界 to 第1维上界) as 数据类型
下面举例说明,需要声明名为myarray一维的字符串数组,大小为6。由于大小固定,即为静态数组。
dim myarray(5) as string
dim myarray(1 to 6) as string
dim myarray(3 to 8) as string
三种形式声明的名为myarray的数组是大小为6、元素均为字符串的一维静态数组,不同的就是它的索引号不同。(数组的大小为上界-下界+1)。
如果希望数组下界是默认从1开始,可以在用户窗体或者模块的声明部分,通过语句Option Base 1 来设置数组下界默认从1开始。后期介绍示例会介绍。(数组索引号从1开始,对于数组索引号与Excel表格的单元格cells属性对应上更为方便,不容易出错。具体后面介绍数组的使用时会再详细说明。)
数组中的元素就可以表示为数组名称(第一维索引号),索引号的范围在下界和上届之间。

2、声明静态二维数组

声明静态二维数组时,在不同的维度之间需要用英文逗号间隔。具体语句如下:
dim 数组名(第1维上界,第2维上界) as 数据类型
省略每个维度的下界时,系统默认从0开始,下界和上界的数值同样可以自定义。
dim 数组名(第1维下界 to 第1维上界,第2维下界 to 第2维上界) as 数据类型
举例说明,声明名为myarray的数组,3*4大小静态数组。(没有确定数组元素类型时,省略默认为Variant变体型)
dim myarray(2,3)
dim myarray(1 to 3,1 to 4)
dim myarray(3 to 5,4 to 7)
三种形式均是声明大小为3*4的静态数组,数组类型省略,默认为Variant变体型。不同的就是索引号不同。通常都是前两种形式。
使用默认数组数据类型的好处是,可以让数组中元素,保存不同类型的值。从而得到一种混合状态的数组。
数组中的元素就可以表示为数组名称(第一维索引号,第二维索引号),索引号的范围在下界和上届之间。

3、静态三维数组数组

依次类推来介绍声明三维数组,不同维度之间用英文逗号间隔。具体语句如下:
dim 数组名(第1维上界,第2维上界,第3维上界) as 数据类型
dim 数组名(第1维下界 to 第1维上界,第2维下界 to 第2维上界,第3维下界 to 第3维上界) as 数据类型
举例说明,声明名为myarray的数组,3*4*2大小整型数值类型的静态数组。
dim myarray(2,3,1) as integer
dim myarray(1 to 3,1 to 4,1 to 2) as integer
dim myarray(2 to 4,3 to 6,2 to 3) as integer
三种形式均是声明大小为3*4*2的静态数组,数组类型为长整型。上界和下界不同从而使索引号不同。通常是使用前两种形式。
数组中的元素就可以表示为a数组名称(第一维索引号,第二维索引号,第三维索引号),索引号的范围在下界和上届之间。
超过三维的声明数组都是以此类推。

4、声明动态数组

前面介绍静态数组和动态数组的区别,主要是在声明时是否确定数组的大小。下面简单介绍下动态数组的声明方式。
首先在用户窗体、模块或者过程中使用dim或public语句声明一个没有下标的数组。比如:
dim myarray()
然后在程序过程中使用ReDim语句重新定义该数组的大小。具体语句如下:
ReDim [preserve] 数组名(下标) [ as 数据类型 ]
使用ReDim语句可以反复改变数组的大小和维度,但不能用ReDim语句更改已经声明的数据类型,除非是默认的Variant所包含的数据
其他内容后面再具体介绍动态数组的章节会具体说明。




本节主要说明了数组类型的划分,以及如何声明数组,不同的维度,静态和动态数组、数据类型,默认的下界等等知识点。内容较为抽象后续会结合实例来具体介绍。如果文章对你有帮助可以偶尔点击文末软广支持,祝大家学习快乐。



Live and Learn
微信公众号:EXCEL-NOTE
(长按二维码关注)


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:45
帖子:9
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP