Dzwebs.Net

撰写电脑技术杂文十余年

vba New Collection集合作用

Admin | 2015-3-26 9:14:14 | 被阅次数 | 12052

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  首先我们先看Collection是用来做什么的?Collection 对象是项目所组成的有序集合,可以把这个集合作为单元来引用。

  说明:Collection 对象提供了简便方法,直截了当将一组相关的项目视为单一对象来引用。集合中的项目或成员被这样一个事实联系起来:它们都属于这个集合。集合的成员不一定都是同一种数据类型的。

  建立集合的方法与建立其它对象的方法一样。例如:

  Dim X As New Collection

  一旦建立集合之后,就可以用 Add 方法添加成员,用 Remove 方法删除成员。在用 For Each...Next 语句重复整个集合时,可以用 Item 方法从集合返回特定成员。

  Dim s As Collection '定义s变量为集合对象
  Set s = New Collection '初始化集合对象s (否则无法使用)

  Dim s As New Collection '推荐这句代码,直接初始化,可以不用再Set了,这一句等于上面两句。

  范例如下:

  '集合s中添加元素的方法
     For i = 1 To 10
         s.Add i '对于集合s,用Add方法可以加入集合元素
             '当然事实上你可以添加任意内容来代替本例中的i
  Next

  '读取集合中元素的方法  
  For i = 1 To s.Count '可以用Count属性返回集合中元素总个数
         t = s(i) '读取集合s中第i个变量存入临时变量t中
         t = s.Item(i) '正规的代码写法应该是这样子(效果一样,推荐用上一句更简明)
         Debug.Print s(i) '在立即窗口中观察s(i)的值
  Next
  
  '下面是集合s中元素删除的方法
  For i = 1 To s.Count '遍历集合元素
         s.Remove (1) '每次删去第1个……直至全部删除完毕 或直接简写为: s.Remove 1
 '        s.Remove (s.Count) '或者每次删除最后一个,直至全部删除完毕(推荐用上一句,不容易错)
 '        或简写为 s.Remove s.Count     
         Debug.Print s.Count '在立即窗口中观察集合s中剩余元素个数
  Next

  综合应用示例:

  对B1:B20区域进行惟一值提取,放到C列中

  On Error Resume Next
  Dim cell As Range
  Dim onlys As New Collection
  Dim item As Long
  Dim arr
  For Each cell In Range("B1:B20")
    If cell <> "" Then onlys.Add cell.Value, CStr(cell.Text)
  Next
  ReDim arr(1 To onlys.Count)
  For item = 1 To onlys.Count
    arr(item) = onlys(item)
  Next
  Range("c1:c" & onlys.Count) = Application.Transpose(arr)


该杂文来自: Excel杂文

上一篇:vba多行多列得到不重复的值放到另外的表中

下一篇:vba判断内容是否为数字

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计