标准模块中:
Public Type ss
 id As String
 name As String
End Type窗体中
:Dim sss As Collection
Public Sub Command1_Click()
Dim s As ss
s.id = "aa"
s.name = "bb"
sss.Add s'此处显示错误,应该怎么改,目的是将一个自定义对象加入collection
End SubPrivate Sub Form_Load()
Set sss = New Collection
End Sub

解决方案 »

  1.   

    Public m_colData As New Collection 'm_ColDta用于保存记录
     '自定义一数据类型
     Type Mytype
      ID as Strng
      Name as String
     End Type
     '建立一类Class1,如下
     Public ID As String
     Public Name As String
     Public Score As Integer
     '定义插入函数用来接受数据到数据结构中
     Public Function InserT2col(pData As Mytype)
     Dim Myclass As New Class1
     Set Myclass = Nothing
     Myclass.ID = pData.ID
     Myclass.Name = pData.Name
     Myclass.Score = pData.Score
     m_colData.Add Item:=Myclass, Key:=pData.ID '以ID作为关键字
    End Function 
      

  2.   

    这样这建立了数据结构,通过编写处理函数代码就可以对其中的数据进行处理输出,如成绩的排序、统计不及格人数等。  3. 2 使用向导  同样建立上例中建立的自定义类型MyTpye和类Class1。在"项目(Project)"菜单中选取"增加类模块(Add Class Module)",选择"VB类构造(VB Class Builder)",在Cass Builder对话框中,选取栏中的"Add New Collection"按钮,选已存在的类clsData形成集合对象Collection1 类,如图1所示。
    图1 Collection Builder对话框  此时系统会自动生成Add,Remove,Item属性和Count方法。  通过定义:Public m_colData As New Collection1 '用于保存记录  调用Collecton1类中的Add方法,即可生成数据结构。  3.3集合与数组的比较  集合和数组都可用下标来调用,但它们之间存在着区别和联系。  (1)相同点。它们都是数据元素的有序集,数组可以看作为限制了数据元素个数的集合。  (2)不同点。①元素的个数不同。数组的大小由创建时决定;集合的大小在创建时并不确定。  ②访问元素的效率不同:。集合相当于链表,查找元素时从集合的头一个开始,顺序向下,访问m_coData(99)要比访问_colData(1)慢得多;而数组元素在内存中是顺序存放的,访问m_coData(99)和访问m_coData(1)的时间是一样的。