VB Collection 对象的一些操作

Sunpy 2011-08-19 09:59:17
最近在写程序,在对Collection对象进行操作时遇到个小问题。
问题整理后是这样的:
Dim coll As New Collection
coll.Add 1, "60001"
coll.Item("60001") = 4
MsgBox coll.Item("60001")

这个代码的话,执行到coll.Item("60001") = 4这句的时候一直不行,虽然可以通过Remove之后Add来解决,但是
搞不清楚,为什么这样不行啊?
...全文
332 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunpy 2011-08-19
  • 打赏
  • 举报
回复
谢谢sysdzw了。
无·法 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunpeiyumail 的回复:]

谢谢各位,看来只能使用Remove和Add方法组合了。
VB的集合操作太少了,不知道网上有没有加强版的集合。
[/Quote]都告诉你了用字典,相当于集合的拓展版,给你一个使用范例:
http://download.csdn.net/source/3050603
Sunpy 2011-08-19
  • 打赏
  • 举报
回复
谢谢各位,看来只能使用Remove和Add方法组合了。
VB的集合操作太少了,不知道网上有没有加强版的集合。
  • 打赏
  • 举报
回复
用数组的方式吧:集合相当于链表,查找元素时从集合的头一个开始,顺序向下,访问m_coData(99)要比访问_colData(1)慢得多

此时系统会自动生成Add,Remove,Item属性和Count方法。

  通过定义:Public m_colData As New Collection1 ‘用于保存记录

  调用Collecton1类中的Add方法,即可生成数据结构。

  3、集合与数组的比较

  集合和数组都可用下标来调用,但它们之间存在着区别和联系。

  (1)相同点。它们都是数据元素的有序集,数组可以看作为限制了数据元素个数的集合。

  (2)不同点。①元素的个数不同。数组的大小由创建时决定;集合的大小在创建时并不确定。

  ②访问元素的效率不同:。集合相当于链表,查找元素时从集合的头一个开始,顺序向下,访问m_coData(99)要比访问_colData(1)慢得多;而数组元素在内存中是顺序存放的,访问m_coData(99)和访问m_coData(1)的时间是一样的。

  结束语

  集合是面向对象编程的一个很重要的特点,对于多个具有相同特征的对象可以用集合对象来处理,从而提高编程效率和界面的统一

无·法 2011-08-19
  • 打赏
  • 举报
回复
如果实在想用这样的方式可以用字典。
set dic = createobject("scripting.dictionary")
无·法 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 sunpeiyumail 的回复:]
最近在写程序,在对Collection对象进行操作时遇到个小问题。
问题整理后是这样的:
Dim coll As New Collection
coll.Add 1, "60001"
coll.Item("60001") = 4
MsgBox coll.Item("60001")

这个代码的话,执行到coll.Item("60001") = 4这句的时候一直不行,虽然可以通过Rem……
[/Quote]Function Item(Index)
VBA.Collection 的缺省成员
返回由位置和关键字指定的 Collection 对象的成员

msdn上没说到可以设置值,也就说它只有get方法,没有let方法的。

另外MsgBox coll.Item("60001")和MsgBox coll(1)是一样的效果

2,503

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧