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

VBA数组(三)数组赋值

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

大家好,上节介绍了在使用数组之前如何声明数组,本节就来介绍静态数组如何赋值。(动态数组会单独一节讲解)

上 节 复 习

在介绍数组赋值之前,首先简单复习下上节介绍的声明数组和数组中元素的表示方法。

以常用的二维数组为例,声明一个3*4的二维数组arr1,数据类型为字符串型。

dim arr1(2,3) as string

声明数组时省略下标,默认从0开始,所以第一维是0至2,第二维是0至3。

数组中每个元素的的表示方法为数组名(第一维索引号,第二维索引号),例如arr1(0,0)、arr1(0,)、arr1(2,3)等,每个元素的坐标可以如下图所示。

还可以将数组该数组声明为dim arr1(1 to 3,1 to 4) as string。

其中第一维索引号为从1至3,第二维维从1至4。数组中每个元素也是数组名(第一维索引号,第二维索引号),例如arr1(1,1)、arr1(3,4)等,其他坐标如下图所示。

两种表示方法,第二种方法即下界从1开始更实用。因为这样数组中元素的坐标,与单元格对象的cells属性坐标一致。数组元素位置就可以和工作表中对应起来。

数 组 赋 值

在前面的编写sub程序过程中,在声明变量之后都要给变量赋值。

同样在声明数组后,对数组赋值,VBA程序才能通过数组访问数据。在给数组赋值时,和变量赋值一样,要分别给数组里的每个元素进行赋值。

下面以静态数组为例,声明了数组的维度,以及每个维度的下界和上界,数组容纳固定量的元素,给数组赋值主要有下面几种方式。

1、每个元素进行赋值

数组赋值时,需要给数组中每个元素进行赋值。这种方式比较简单

下面通过举例演示,如声明一个5个元素的integer类型的数组,将1到5的自然数保存到数组中。具体演示如下:

示例中声明了Arr(4) 的5个元素的大小的integer类型数组。赋值时将它每一个元素,从Arr(0)=1开始一直到Arr(4)=5,运行就完成了赋值。

再举个简单的例子,声明一个4个元素的integer类型的数组,将A1:A4单元格区域中的数值赋值给数组。

A列的单元格填入整数,声明了Arr(1 to 4)为4个元素的integer数组,然后依次将每个单元格的值赋值给数组中的元素从Arr(1) 到Arr(4)。最后再立即窗口中显示Arr(3)的值为3。

这种方法主要是帮助理解数组元素如何赋值,在VBA程序中通常涉及大量数据的赋值。就需要用其他更方便的方法代替。

2、通过循环结构赋值

对于批量处理数据时,通常都会借助于循环结构。同样在数组的批量赋值时,同样也可以借助于循环结构。比如上面两个小示例,都可以用循环结构改造。以第二个为例。

通过for循环结构变量i从1到4进行循环,将数组中的每个元素进行赋值。对于大量数据更加实用。

下面用二维数据举例,前面提到如果数组维度的下界均为从1开始,那么数组中元素的坐标,与单元格对象的cells属性相对应。

如表格中A1:D4区域共3行4列的有多种类型的数据,将它们赋值到数组中。需要先声明一个3*4的二维数组变体型数组(由于有不同类型的值,所以默认的变体型Variant类型)。将元素单独赋值是很大的工作量,下面就通过循环嵌套来将表格中的值赋值给数组。

代码中首先声明了3*4大小的二维数组,为默认的变体型数据类型。维度的下界均从1开始。

下面就是两个for循环嵌套。整形变量i从1循环至3,变量j从1循环至4,两个循环嵌套中,执行 Arr(i, j) = Cells(i, j)语句将cells(i,j)元素的值赋值给数组中的元素Arr(i,j)。

执行代码后在立即窗口中显示数组Arr(2,3)的值为“姓名” Arr(3,1)的值为“小白”。

这种通过循环语句给数组赋值的方法很经典,掌握后对数组和循环结构都会有很好的理解。而二维数组下界从1开始时与单元格cells属性是对应关系。

3、通过Range对象创建数组

上面介绍了通过循环结构给数组赋值后,上面提到二维数组下界从1开始时与单元格cells属性是对应关系。实际不通过循环嵌套结构也可以直接赋值。

如果想把一个单元格区域的值,直接存储到数组里,可以直接把单元格区域的值赋值给变量名。如下图所示:

代码中首先不是声明数组,而是声明了一个默认的变体型变量。

而Arr = Range("a1:d4").Value该语句就讲A1:D4单元格的值赋值给了Arr这个数组中.(由变体型变量变成数组。)

通过这种方式得到的数组,维度的下届都是1。即得到的这个数组其实就是Arr(1 to 3,1 to 4)

所以执行代码后在立即窗口中显示仍是数组Arr(2,3)的值为“姓名” Arr(3,1)的值为“小白”。

这种方法实际是直接创建数组的方法,这里归到数组赋值一并介绍。注意两个关键点。

1、声明的默认的变体型变量。

2、通过这种方式得到的数组,维度的下届都是1。


今天下雨

本节主要是介绍了数组的赋值的内容,特别是循环结构赋值、二维数组和单元格对象cells属性的对应、单元格range对象创建新数组等内容。后续在介绍动态数组、数组相关函数时都会再涉及和复习。

希望本文对你有帮助,有问题可以给在下方留言,祝大家学快乐。

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

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

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

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

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