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
(类型为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
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)