大家好,我是中药党。 上次我们一块学习了ExcelVBA中和数组相关的一些常用函数的用法,这次我们来介绍集合的常用方法和属性。 VBA中的集合是用户定制的一组数据信息,存放于一个特殊的一维数组中,但和数组不同的是,对集合中的数据类型,没有任何限制,也不需要数据类型相同,比如,数值、文本、工作表、工作簿等等都可以加入集合。 但是有的小伙伴会问了,说集合是一个一维数组,那么为啥不直接建立一个一维数组来存储信息,而要使用集合对象呢? 答案很简单,因为使用集合处理可以简化处理过程,节省代码量。 比如,我们要向一个不定长度的一维数组中添加元素,代码如下图: 而如果我们要向集合中添加成员,代码就非常简单,如下图: 从上边的例子很容易看出,用集合来处理这种问题会非常方便,下边我们就详细介绍一下集合中几种方法的使用。 1.Add方法和Item方法 集合的Add方法用来添加一个成员到Collection对象,Item方法利用位置或键(key)返回Collection 对象的指定成员。 Add语法:object.Add item, key, before, after
Item语法:object.Item(index) Index参数:指定集合中成员的位置。如果是数值表达式,则 index 必须是从 1 到集合Count 属性值之间的数值。如果是字符串表达式,则当加入一被引用的成员到集合时,index 必须和 key 参数对应。 下边我们看几个使用方法添加集合成员的例子: ①按顺序添加集合成员。得到的集合是索引从1开始的自然数,用Item(3)取得集合中第三个成员,如下图: ②按顺序添加集合成员,为集合成员设置字符索引(其实就是起个别名)。得到的集合不仅可以用数字索引取得,也可以用字符索引取得,如下图: ③使用before和after添加集合成员可以改变新添加成员的顺序。Before和after的参数可以设置为数值,也可以设置为已设置的字符索引(key),表示在现在集合相应索引位置的前边或者后边添加新成员。 ④可选参数的设置方法。Add方法的参数有四个,除了第一个参数是必需参数,其余参数都是可选参数,当不设置中间可选参数,要设置后边的可选参数时,中间的可选参数要用逗号隔开,表示不设置这个位置的可选参数。如下图: ⑤Item是集合的默认缺省方法 Item 方法是集合的缺省方法。因此,以下两行程序代码等价: 有的小伙伴提出这样的问题,如果我想替换集合中某个位置的元素,能不能给该位置的元素赋值呢?如下图: 在集合中,Item是集合的方法,并不是集合的属性,是无法通过等号赋值的。正确的做法是在Item(i)之前添加成员,原来的Item(i)就順移到Item(i+1),然后再将item(i+1)删掉,这样就达到了目的。如下图: 2.Remove方法 集合的Remove方法就是把成员从Collection 对象中删除。 语法:object.Remove index Index参数:必需的。表达式,指定集合成员的位置。如果是数值表达式,则 index 必须是介于 1 和集合Count 属性值之间的数。如果是字符串表达式,则为成员用Add方法添加到集合时,为成员设置的字符串索引key。 ①通过数字索引删除集合成员 移除掉原来集合中Item(1)位置的成员,原来Item(2)位置的成员就順移到Item(1)位置,如下图: ②也可以通过添加成员时设置的字符串索引移除集合成员。 3.Count属性 集合的唯一一个属性,返回包含集合中的对象数目,类型是Long(长整数),只读。 该属性取得一个集合的成员个数,最常用的场景是在循环遍历某个集合中使用,如下图: 集合在平常的使用是非常的多,但是使用起来却是比较简单,只有三个方法(Add、Item和Remove)和一个属性(Count),即使是参数较多的Add方法,在平常的大部分使用场景中,也很少用到后边几个可选参数。小伙伴们在操作数量不定的多工作簿、多工作表或者多个Range区域的时候,很大程度都会要用到集合,所以,在遇到类似问题时,尽量用集合操作而非一维动态数组。今天就说到这里,欢迎小伙伴们提出问题、多多交流。 |
|