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

Excel VBA解读(150): 数据结构—集合的基本使用

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

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

excelperfect

运用集合,我们可以更高效地完成一些任务。例如,集合的特点就是可以把很多值存储在一个集合中,而不需要使用多个变量来存储这些值。

下图1所示为存储学生分数的工作表,如果使用变量来存储学生的姓名和分数,那会使用很多的变量。

图1

我们可以使用集合来方便地存储这些数据。下面的代码将学生姓名作为集合元素的键,将相应的成绩作为元素的值:

'声明并创建集合

Dim colStudents As New Collection

'声明其他变量

Dim lngLast As Long

Dim rng As Range

'找到工作表中最后一行

lngLast =Worksheets("Sheet1").Range("A" &Rows.Count).End(xlUp).Row

'遍历数据

'将学生姓名作为键

'将学生分数作为值

For Each rng In Worksheets("Sheet1").Range("A2:A" & lngLast)

colStudents.Add _

Item:=rng.Offset(0, 1).Value, _

Key:=rng.Value

Next rng

这样,想要查找某名学生的分数,直接使用代码:

colStudents("韩梅梅")

不必使用循环来一个个查找,非常方便!

可以声明参数为集合并将其传递给过程或数。例如下面的MyPro过程中,将集合传递给YourPro过程:

代码语言:javascript
复制
Sub MyPro()
    '声明并创建集合
   Dim colMy As New Collection
    '添加元素
   colMy.Add "完美Excel"
   colMy.Add "excelperfect"
    '传递给过程
   YourPro colMy
End Sub
'接受集合参数
Sub YourPro(ByRef colYou AsCollection)
   Dim item As Variant
   For Each item In colYou
        Debug.Print item
   Next item
End Sub
注意到,在被调用过程YourPro中的参数colYou为ByRef,即传递引用,这意味着在被调过程中对集合的更改,在主调过程中该集合将会同时被修改。
还可以从自定义函数中返回集合,如下面的示例代码:
Sub Main()
    '声明集合变量
   Dim colTest As Collection
   Dim item As Variant
    '将函数过程中返回值赋给变量
   Set colTest = MyCollection
    '输出集合元素
   For Each item In colTest
        Debug.Print item
   Next item
End Sub
Function MyCollection() As Collection
    '声明并创建集合
   Dim colMy As New Collection
    '添加元素
   colMy.Add "完美Excel"
   colMy.Add "excelperfect"
    '返回集合
   Set MyCollection = colMy
End Function

运行过程Main的结果如下图2所示。

图2

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

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

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

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

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