前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA数组(二)声明数组

VBA数组(二)声明数组

作者头像
无言之月
发布2019-10-13 15:38:39
3.1K0
发布2019-10-13 15:38:39
举报

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

一、数组的分类

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所包含的数据

其他内容后面再具体介绍动态数组的章节会具体说明。


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


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel和Access学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档