VBA数组
「VBA」学习系列第14篇
这篇介绍VBA中非常重要的核心内容——VBA数组。在VBA里,数组一种特殊类型的变量,用来储存字符串型、整型、货币型、日期型等变量。两种最常用的数组类型是一维数组和二维数组。三维及以上维度的数组不是很常用到,原理和低维数组是一样的。
#1 数组的声明
数组变量仍旧用dim关键字,下面介绍常用的定义方法。
VBA默认从0开始编号,比如定义数组dim arr1(5),数组arr1总共有6个元素,从arr1(0)到arr1(5)。另外,像arr2这样定义的方式,把上界和下届都说明清楚,数组arr2共有5个元素,从
arr2(1)到arr2(5)。二维数组的定义方式和一维数组一样,如arr3和arr4。
如果要将VBA默认的数组编号改为从1开始,还可以在过程外声明以下语句:
Option Base 1
#2 数组的循环vba 字符串转数组
以前在VBA语句中讲过循环语句,因为数组有明确的上下界,所以for和for each循环比较常用。首先先了解获取VBA数组上下界的函数——Lbound和Ubound。
下面用for循环和for each循环的一个实例介绍如何给arr数组赋值和从arr数组取值。例子比较简单,就不一一讲解具体代码了。     
#3 动态数组
很多时候,数组的上下界并不能一开始就指定好。这种情况下,就用善用数组的动态声明关键字来定义数组的大小:redim和redim preserve。
redim可以实现用参数来动态定义数组的大小。如下,变量m赋值为5,用redim方法就可以讲arr定义为5个元素的数组。改变m值,arr数组的大小也随之改变。
redim preserve既可以实现用参数来动态定义数组大小,还可以保存原先数组中的值。当数组的上界提前不可预知的时候,那就用到redim preserve方法了。比如下例,将brr中大于10的数值放入arr数组中,因为brr数组中大于10的数值个数提前不知道,所以用判断的方法,当到一个符合条件的数值时,将arr数组的大小相应扩大一个,然后将数值装进去。redim preserve是VBA数组使用时很常用的方法,有时还必须用这个方法才能解决问题。
#4 数组的嵌套
当数据字段比较多的时候,经常会用到嵌套数组——即数组中的数组。比如我有100张同样大小的表,可以先定义一个m*n大小的数组x,然后用for循环将数组x赋值到data。以后就可以用data(i)(j,k)到方法来引用嵌套数组里面的元素。
VBA数组的基本内容并不多,也就上面介绍的几大块内容。但要在VBA程序中活用数组以提高程序效率,还需要在问题中反复实践。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。