VBA 中类 Arraylist 的对象

Dictionary 对象


描述

对象,用于存储数据关键字和条目对。

语法

Scripting.Dictionary

说明

Dictionary 对象与 PERL 关联数组等价。可以是任何形式的数据的条目被存储在数组中。每个条目都与一个唯一的关键字相关联。该关键字用来检索单个条目,通常是整数或字符串,可以是除数组外的任何类型。

下面的代码举例说明了如何创建一个 Dictionary 对象:

Sub testData()

'Set objs1 = Sheets("ORGFCST")
Dim d, a,c As Variant                 '创建一个变量
Dim strT
Set d = CreateObject("Scripting.Dictionary")
    For i = 2 To 5 Step 1
       strT = CStr(Sheets("ORGFCST").Cells(i, 2))
       If strT <> "" Then
         d.Add strT, strT
       End If
    Next
    
   a = d.Items
c = d.keys
 For i = 0 To d.Count - 1
        MsgBox a(i)
MsgBox c(i)
 Next

End Sub





Collection 对象


Collection 对象是项目所组成的有序集合,可以把这个集合作为单元来引用。

说明

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

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

Dim X As New Collection

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


Collection 对象示例

本示例建立一个命名为 MyClasses Collection 对象,再建立一个对话框,让用户可从对话框中将对象建立到该集合对象中。若要观察程序如何工作,请先在“插入”菜单上选择“类模块”命令,然后在 Class1 的模块级中声明一个公用变量,命名为InstanceName(类型为PublicInstanceName),此变量用来保存每个类实例的名称。不要更改类的缺省名称 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


 

Count 属性

请参阅     示例     应用于     特性

返回 Long(长整数),包含集合中的对象数目。只读。

Add 方法

请参阅     示例    应用于    特性

添加一个成员到 Collection 对象。

语法

object.Add item, key, before,after

Add 方法的语法具有下列对象限定符和命名参数:

部分描述
object必需的。对象表达式,其值为“应用于”列表中的对象。
item必需的。任意类型的表达式,指定要添加到集合中的成员。
key可选的。唯一字符串表达式,指定可以使用的键字符串,代替位置索引来访问集合中的成员。
before可选的。表达式,指定集合中的相对位置。在集合中将添加的成员放置在 before参数识别的成员之前。如果为一数值表达式,则before必须是介于 1 和集合Count属性值之间的值。如果为一字符串表达式,则当添加一个被引用的成员到集合时,before必须对应于指定的key值。可以指定before 位置或after 位置,但不能同时指定这两个位置。
after可选。表达式,指定集合中的相对位置。在集合中将添加的成员放置在 After 参数识别的成员之后。如果为一数值表达式,则after必须是介于 1 和集合Count属性值之间的值;如果为一字符串表达式,则当添加一个被引用的成员到集合时,after必须对应于指定的key值。可以指定before 位置或after 位置,但不能同时指定这两个位置。

说明

before after 参数是字符串表达式或数值表达式,均须引用集合中现有成员,否则将导致错误发生。

如果指定的 key 和集合中现有成员的 key 发生重复,则也会导致错误发生。

Remove 方法

请参阅     示例    应用于    特性

把成员从 Collection 对象中删除。

语法

object.Remove index

Remove 方法的语法具有下列对象限定符和部分:

部分描述
object必需的。对象表达式,其值为“应用于”列表中的对象。
Index必需的。表达式,指定集合成员的位置。如果是数值表达式,则 index必须是介于 1 和集合Count属性值之间的数。如果是字符串表达式,则在将被引用的成员添加到集合时,index 必须和key参数一致。

说明

如果 index 的值与集合的现有成员不匹配,则会导致错误发生。

Item 方法

请参阅     示例    应用于    特性

利用位置或键返回 Collection 对象的指定成员。

语法

object.Item(index)

Item 方法的语法具有下列对象限定符和部分:

部分描述
object必要。对象表达式,其值为“应用于”列表中对象。
index必要。为一表达式,指定集合中成员的位置。如果是数值表达式,则 index 必须是从 1 到集合 Count 属性值之间的数值。如果是字符串表达式,则当加入一被引用的成员到集合时,index 必须和key 参数对应。

说明

如果 index 值无法与集合的任何现有成员匹配,就会导致错误发生。

Item 方法是集合的缺省方法。因此,以下两行程序代码等价:

Print MyCollection(1)
Print MyCollection.Item(1)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值