个人感觉数组是VBA中比较有阶段性意义的知识点,如果只是用VBA做一些方便日常工作的处理,不学数组也是可以的,无非是代码看起来比较蠢一些,操作稍微慢一丢丢,但是在外行人眼里已经很厉害了。
而理解了数组,意味着编程水平进阶了,后续学习vb/C#或者Python都会更快速一些。那话说回来,数组也不难,无非是把表格抽象化了,然后在后台操作。数组可以提高VBA的运行效率,因为用二维数组去处理工作表,可以只读取一次,然后运算,再赋值一次。不用数组的话需要对每个单元格都进行读取和赋值,对比如下图。
有聪明的朋友可能会说,读取到数组中运算过程也要循环的。是的,但是在数组中循环比直接操作单元格循环 每个循环都少了两步,而且是最耗时的两步。
数组的维度
数组可以分为一维数组、二维数组和多维数组。类似于我们熟知的点、线、面、体。一个变量,就像一个单元格;而一维数组就像Excel中的一列数(或者一行数);二维数组就像Excel中的工作表(一张表单)。一般我用二维数组比较多一些,三维及以上的数组我没有使用过。
'定义一个十位数的一维数组
数组的上限和下限
使用Lbound函数可以获取到数组的下限,使用Ubound可以获取到数组的上限。
一维数组的下限永远是0。这里也顺便说一下,编程中的数数大部分都是从零开始的。
二维数组可以在定义的时候自定义下限,读取单元格区域获取的数组的下限是(1,1)。表格对应到二维数组中,第一个维度表示行,第二个维度表示列,这个用的多了就会记住。
'读取工作表名为Sheet1的A1:B3区域作为数组
数组的使用
使用arrayname(rowindex,columnindex)这样的格式可以引用数组。下面使用数组对"A1:B3"区域的数据全部除以10000。
sub
如上,这样一个最简单的使用数组的 元转万元 的VBA程序就实现了。
专栏在语雀知识库同步,感觉语雀上的目录更明确一些,有兴趣可以去看看。您的点赞和喜欢是我更新的动力,请不要只让它躺在收藏夹吃灰(:
VBA从入门到放弃 · 语雀www.yuque.com