自定义集合类型,类似于变量声明,只是要将Dim关键字和New collection关键字搭配起来使用,其语法描述如下:其中集合名的命名方式同于标准变量的命名

Dim 集合名 As New collection

对于已经定义的集合对象,可以使用集合的Add方法向集合中添加元素,语法如下:

集合名.add item[,key] [,before] [,after]

item:是一个必要的参数,表示将要添加到集合的对象名称

Key: 是一个可选参数,表示该对象在集合中以关键字表示,以供访问结合元素时,能够按照关键字访问

before:表示位于一个对象之前,其值为集合中某一对象的索引号

after:表示位于一个对象之后,其值为集合中某一对象的索引号

【环境准备】

首先插入“类模块”

修改“类模块”名称

双击修改后的“类模块”名称,并在代码窗口写下如下代码:

然后,新建插入“模块”

【代码区域】

Sub 自定义集合()
Dim zdyjh As New Collection '自定义一个集合
Dim obj As classname '定义一个对象
Dim num As Integer '定义一个计数器
Set obj = New classname '对一个变量赋值
obj.name = "杨过" '为对象的属性赋值
zdyjh.Add Item:=obj, Key:="first" '将对象添加到集合中
Set obj = New classname '新建一个对象
obj.name = "郭靖"
zdyjh.Add Item:=obj, Key:="second"
Set obj = New classname
obj.name = "黄蓉"
zdyjh.Add Item:=obj, Key:="third"
For i = To
Debug.Print
Next
'输出现有集合中的元素
Debug.Print "现有集合中共有" & CStr(zdyjh.Count) & "个元素,个元素举例如下:"
Debug.Print
num =
For Each tempobj In zdyjh
Debug.Print "第" & CStr(num) & "对象名字为:" & tempobj.name 'CStr函数将数据强制转换为字符
Debug.Print
num = num +
Next
Set obj = New classname
obj.name = "段誉"
zdyjh.Add Item:=obj, Key:="forth", before:=
Debug.Print "在第2个对象之前插入对象后,集合中共有" & CStr(zdyjh.Count) & "个元素,各元素列举如下:"
Debug.Print
num =
For Each tempobj In zdyjh
Debug.Print "第" & CStr(num) & "对象的名字为:" & tempobj.name
Debug.Print
num = num +
Next
Set obj = New classname
obj.name = "胡八一"
zdyjh.Add Item:=obj, Key:="five", after:=
Debug.Print "在第三个对象之后插入对象后,集合共有" & CStr(zdyjh.Count) & "个元素,各元素列举如下:"
Debug.Print
num =
For Each tempobj In zdyjh
Debug.Print "第" & CStr(num) & "对象的名字为:" & tempobj.name
Debug.Print
num = num +
Next
'移除第三个对象
zdyjh.Remove ()
Debug.Print "删除第三个对象之后,集合共有" & CStr(zdyjh.Count) & "个元素,各元素列举如下:"
Debug.Print
num =
For Each tempobj In zdyjh
Debug.Print "第" & CStr(num) & "对象的名字为:" & tempobj.name
Debug.Print
num = num +
Next
End Sub

【结果展示】

立即窗口打印结果为:

现有集合中共有3个元素,个元素举例如下:

第1对象名字为:杨过

第2对象名字为:郭靖

第3对象名字为:黄蓉

在第2个对象之前插入对象后,集合中共有4个元素,各元素列举如下:

第1对象的名字为:杨过

第2对象的名字为:段誉

第3对象的名字为:郭靖

第4对象的名字为:黄蓉

在第三个对象之后插入对象后,集合共有5个元素,各元素列举如下:

第1对象的名字为:杨过

第2对象的名字为:段誉

第3对象的名字为:郭靖

第4对象的名字为:胡八一

第5对象的名字为:黄蓉

删除第三个对象之后,集合共有4个元素,各元素列举如下:

第1对象的名字为:杨过

第2对象的名字为:段誉

第3对象的名字为:胡八一

第4对象的名字为:黄蓉

【VBA编程】10.自定义集合的更多相关文章

  1. C#高级编程(第9版) 第10章 集合 笔记

    话说 虽然敲过好多代码, 但除了C++,一直没正眼瞧过其它语言.(没办法 谁叫C++既有oop又能自由控制内存呢) 今天 看公司老项目的src,c#的,linq+Dictionary的用法有感.所以找 ...

  2. VBA编程的工程性规划

    看过很多人写的VBA代码,一团一团的,一点规划都没有,为了VBA编程更具工程性,这里讨论一下,并列出自己的一些建议:0.给VBA工程定义一个名字,而非直接使用默认的名称——"VBAProje ...

  3. vba编程基础2

    安装office2010的时候, 最好是 完全安装/完整安装 , 这样可以查阅 excel的 "帮助文档" 帮助文档中包含了更多的/更详细的 参考信息. 普通模块无事件, 只有 子 ...

  4. vba编程基础1

    在主要的编程语言中, 结构体是用大括号来表示 代码段的 范围 界定的. 但是在一些比较"老的"语言中,由于历史原因, 还是使用的 是: 关键字来进行界定代码 的 结构段, 如vba ...

  5. VBA编程常用词汇英汉对照表

    表 20‑1到表 20‑8是VBA编程中使用频率最高的英文单词,按字母排序.词性列中,a表示形容词,n表示名词,v表示动词,p表示介词以及其他词性. 表 20‑1 VBA编程常用词汇表 单词 中文 词 ...

  6. 《C#本质论》读书笔记(16)构建自定义集合

    16.1 更多集合接口 集合类(这里指IEnumerable层次结构)实现的接口层次结构 16.1.1 IList<T>与IDictionary<TKey,TValue> 字典 ...

  7. UICollectionView(集合视图)以及自定义集合视图

    一.UICollectionView集合视图           其继承自UIScrollView.         UICollectionView类是iOS6新引进的API,用于展示集合视图,布局 ...

  8. 集合、拆箱、装箱、自定义集合的foreach

    集合部分 参考:http://msdn.microsoft.com/zh-cn/library/0ytkdh4s(v=vs.110).aspx 集合类型是诸如哈希表.队列.堆栈.包.字典和列表等数据集 ...

  9. 十六、C# 常用集合类及构建自定义集合(使用迭代器)

    常用集合类及构建自定义集合 1.更多集合接口:IList<T>.IDictionary<TKey,TValue>.IComparable<T>.ICollectio ...

随机推荐

  1. cpu亲和性绑定

    将进程与cpu绑定,最直观的好处就是减少cpu之间的cache同步和切换,提高了cpu cache的命中率,提高代码的效率.从cpu架构上,NUMA拥有独立的本地内存,节点之间可以通过互换模块做连接和 ...

  2. HashMap的实现原理 HashMap底层实现,hashCode如何对应bucket?

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 数组和链表组合成的链表散列结构,通过hash算法,尽量将数组中的数据分布均匀,如果has ...

  3. 【POJ 2154】Color

    http://poj.org/problem?id=2154 还是先套上Burnside引理:\[\begin{aligned} ans & =\sum_{i=1}^n n^{(i,n)-1} ...

  4. JZYZOJ1457 [NOIP2016]换教室 期望dp 动态规划 floyd算法 最短路

    http://172.20.6.3/Problem_Show.asp?id=1457 我不知道为什么我倒着推期望只有80分,所以我妥协了,我对着题解写了个正的,我有罪. #include<cst ...

  5. 【枚举】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem D. Cutting Potatoes

    题意:有n个土豆,每个有体积V(i),你可以将每个土豆等分为不超过K份,问你最大块和最小块比值最小为多少. 直接枚举切法,只有n*K种,然后保证其为最大块,去算其他块的切法,即让其他块切得尽可能大即可 ...

  6. 【c++随手记】编程基础之输入输出

    今天试了下noi oj的1.1节,随便总结一下. [cout左对齐右对齐的方法] #include<iostream> #include<cstdio> #include< ...

  7. Problem C: 更改大小写

    #include<stdio.h> int main() { ; ]; gets(a); while(a[i]!='\0') { ; ++i; } printf("%s" ...

  8. #iOS问题记录#UITableView加载后直接滑动倒最底部

    类似QQ的聊天框,当进入聊天框,直接滑动倒最底部: 需要先将以他变了view滚动倒底部,再来移动NSIndexPath, 代码如下: -(void) doForceScrollToBottom { d ...

  9. 让SignalR客户端回调支持强类型

    几天写一个小程序的时候用到了SignalR,发现现在SingalR Server 支持强类型了,也就是说,我们可以定义一个客户端的通知契约: public interface IClient    { ...

  10. FTP客户端工具

    推荐使用8UFTP.小.快.好! 8UFTP工具分为8UFTP客户端工具和 8UFTP智能扩展服务端工具,涵盖其它FTP工具所有的功能.不占内存,体积小,多线程,支持在线解压缩.界面友好,操作简单,可 ...