前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel VBA解读(149): 数据结构—集合的基本操作

Excel VBA解读(149): 数据结构—集合的基本操作

作者头像
fanjy
发布2019-07-19 16:20:25
3.4K0
发布2019-07-19 16:20:25
举报
文章被收录于专栏:完美Excel完美Excel

学习Excel技术,关注微信公众号:

excelperfect

除了Excel对象模型中已经有的集合对象外,我们还可以创建自已的集合。有两种方式。

创建集合的第一种方式

首先,声明集合变量:

Dim colMyBooks As Collection

然后,在需要使用该集合前创建集合:

Set colMyBooks = New Collection

创建集合的第二种方式

也可以在声明的同时创建集合:

Dim colmybooks As New Collection

两种方式作用相同,都创建了一个名为colMyBooks的集合。第一种方式,先声明变量,只是在需要集合时再创建集合对象,事先不占用资源。

添加集合元素项

在创建集合对象后,可以使用Add方法给其添加元素项:

colMyBooks.Add "Algorithms"

在集合colMyBooks中添加元素“Algorithms”。

注意,当声明了集合变量后,在输入代码时,VBE会自动提示其具有的方法,如下图1所示。

图1

在添加集合元素时,还可以指定所添加元素的键值,如下图2所示。

图2

注意到,VBE给出的参数提示表明,Add方法具有4个参数。第1个参数指定元素内容,第2个参数指定元素的键值,第3个和第4个参数指定元素放置的位置。其中,集合中的键必须是唯一的,即每个集合元素对应唯一的键值。

我们在集合colMyBooks中添加2个元素,其中元素”Algorithms”的键为“算法”,元素“excelperfect”的键为“完美Excel”:

colMyBooks.Add "Algorithms", Key:="算法"

colMyBooks.Add Item:="excelperfect", Key:="完美Excel"

在指定位置插入元素

运行上述代码后,集合中的元素为:

Algorithms,excelperfect

现在,我要在它们中间插入一个元素“math”,可以使用下面的代码:

colMyBooks.Add Item:="math", Key:="数学", Before:="完美Excel"

此时,集合中的元素为:

Algorithms,math,excelperfect

上面的代码将键值作为Before参数的值,也可以将索引值作为其参数值:

colMyBooks.Add Item:="math", Key:="数学", Before:=2

参数Before将元素插入到指定元素的前面。同理,参数After将元素插入到指定元素之后。

获取/访问集合元素

可以使用索引值获取或访问集合中的元素:

colMyBooks(1)

将获取/访问集合colMyBooks中的第1个元素。

图3

其实上述代码中省略了Item方法,完整的代码如下:

colMyBooks.Item(1)

原因是,Item方法是集合的默认方法,因此可以省略。

也可以使用键值来访问/获取集合中的元素:

colMyBooks.Item("完美Excel")

结果为:

excelperfect

同样,由于Item方法为默认方法,上述代码可以简写为:

colMyBooks("完美Excel")

要访问/获取集合colMyBooks中的所有元素,可以使用下面的代码:

For i = 1 To colMyBooks.Count

Debug.Print colMyBooks(i)

Next i

代码使用For循环遍历集合中的所有索引值,并根据索引值取得对应的元素项。代码中的:

colMyBooks.Count

返回集合中元素的数量。

也可以使用下面的代码访问/获取集合colMyBooks中的所有元素:

Dim col As Variant

For Each col In colMyBooks

Debug.Print col

Next col

删除集合元素

使用Remove方法来删除集合中的元素。例如:

colMyBooks.Remove (1)

删除集合colMyBooks中的第1个元素。当然,也可以使用键值删除相对应的元素:

colMyBooks.Remove ("算法")

可以使用循环来删除集合中的所有元素:

For i = 1 To colMyBooks.Count

colMyBooks.Remove (1)

Next i

注意,传递给Remove方法的参数值始终为1。

也可以再次使用下面的代码:

Set colMyBooks = New Collection

重置集合,即清空集合中的所有元素。

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

本文分享自 完美Excel 微信公众号,前往查看

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

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

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