我的集合有两项,一项是id,一项是content,
dim col as collection
col.Add "1", "111"
col.Add "2", "222"
如何遍历呢?

解决方案 »

  1.   

    Dim i As Long
    For i = 1 To col.Count
        List1.AddItem col.Item(i)
    Next
      

  2.   

    CSDN的例子:本示例建立一个命名为 MyClasses 的 Collection 对象,再建立一个对话框,让用户可从对话框中将对象建立到该集合对象中。若要观察程序如何工作,请先在“插入”菜单上选择“类模块”命令,然后在 Class1 的模块级中声明一个公用变量,命名为 InstanceName(类型为 Public InstanceName),此变量用来保存每个类实例的名称。不要更改类的缺省名称 Class1。将下列代码复制到另一个模块的“通用”节中,然后在另一个过程中用 ClassNamer 语句使它启动激活。(本示例仅使用支持类的主机应用程序。)Sub ClassNamer()
    Dim MyClasses As New Collection ' 建立一个集合对象(Collection)。
    Dim Num ' 计数用变量,用来对对象的个数计数。
    Dim Msg As String ' 提示信息用变量。
    Dim TheName, MyObject, NameList ' 对象信息用变体。
    Do
    Dim Inst As New Class1 ' 建立 Class1 的新实例。
    Num = Num + 1 ' 把计数变量 Num 加一,然后要求输入新对象个体的名称。
    Msg = "Please enter a name for this object." & Chr(13) _ & "Press Cancel to see names in collection."
    TheName = InputBox(Msg, "Name the Collection Items")
    Inst.InstanceName = TheName ' 将名称送入对象实例。
    ' 若用户输入了名称,将它加入集合。
    If Inst.InstanceName <> "" Then
    ' 将命名的对象加入集合。
    MyClasses.Add item := Inst, key := CStr(Num)
    End If
    ' 清除当前的引用,为对下一个对象做准备。
    Set Inst = Nothing
    Loop Until TheName = ""
    For Each MyObject In MyClasses ' 建立名称列表。NameList = NameList & MyObject.InstanceName & Chr(13)
    Next MyObject
    ' 将名称列表在消息框中显示出来。
    MsgBox NameList, , "Instance Names In MyClasses Collection"For Num = 1 To MyClasses.Count ' 从集合中删除名字。
    MyClasses.Remove 1 ' 因为每删除一个对象后,集合
    ' 会自动重排顺序,故每次迭代时只需删除第一个
    Next ' 对象即可。
    End Sub====================
    免费的学习交流网站,欢迎大家访问!
    http://www.j2soft.cn/
      

  3.   

    以上二位的例子不对吧,关键是如何用"for everyobj in col"遍历整个集合?
      

  4.   

    Option ExplicitPrivate Sub Command1_Click()
            Dim i As Long
            Dim myColl As Collection
            
            Set myColl = New Collection
            myColl.Add "a"
            myColl.Add "b"
            myColl.Add "c"
            
            For i = 1 To myColl.Count
                 Debug.Print myColl(i)
            Next
            
            Set myColl = Nothing
    End Sub
      

  5.   

    以上二位的例子不对吧,关键是如何用"for everyobj in col"遍历整个集合?=====一回事,写法不同而已:Dim i  As Variant
    For Each i In col
        List1.AddItem i
    Next
      

  6.   

    Option ExplicitPrivate Sub Command1_Click()
            Dim i As Long
            Dim col As Collection
            Set col = New Collection
            col.Add "111", "1"
            col.Add "222", "2"
            col.Add "333", "3"
            Debug.Print col("3")
            Debug.Print col("1")
            Debug.Print col("2")
            Set col = Nothing
    End Sub结果为:
    333
    111
    222即把ID放值的后面,content值即可根据ID来取