從集合中檢索專案
可以通過呼叫 .Item
函式從 Collection
中檢索專案。
句法:
.Item(index)
引數 | 描述 |
---|---|
指數 | 要從 Collection 中檢索的專案。如果傳遞的值是數字型別或帶有數字子型別的 Variant ,則它將被解釋為數字索引。如果傳遞的值是包含字串的 String 或 Variant ,則它將被解釋為鍵。如果傳遞了 Collection 中不存在的 String 鍵,則會產生執行時錯誤 5:無效的過程呼叫或引數。如果傳遞的數字索引在 Collection 中不存在,則會產生執行時錯誤 9:下標超出範圍。 |
筆記:
.Item
是Collection
的預設成員。這允許語法的靈活性,如下面的示例用法所示。- 數字索引是從 1 開始的。
- 金鑰不區分大小寫。
.Item("Foo")
和.Item("foo")
指的是同一把鍵。 - 該指標引數不隱式轉換為數字從
String
,反之亦然。.Item(1)
和.Item("1")
完全有可能參考Collection
的不同專案。
樣本使用(索引):
Public Sub Example()
Dim foo As New Collection
With foo
.Add "One"
.Add "Two"
.Add "Three"
.Add "Four"
End With
Dim index As Long
For index = 1 To foo.Count
Debug.Print foo.Item(index) 'Prints One, Two, Three, Four
Next
End Sub
樣本用法(鍵):
Public Sub Example()
Dim keys() As String
keys = Split("Foo,Bar,Baz", ",")
Dim values() As String
values = Split("One,Two,Three", ",")
Dim foo As New Collection
Dim index As Long
For index = LBound(values) To UBound(values)
foo.Add values(index), keys(index)
Next
Debug.Print foo.Item("Bar") 'Prints "Two"
End Sub
示例用法(替代語法):
Public Sub Example()
Dim foo As New Collection
With foo
.Add "One", "Foo"
.Add "Two", "Bar"
.Add "Three", "Baz"
End With
'All lines below print "Two"
Debug.Print foo.Item("Bar") 'Explicit call syntax.
Debug.Print foo("Bar") 'Default member call syntax.
Debug.Print foo!Bar 'Bang syntax.
End Sub
請注意,允許使用 bang(!
)語法,因為 .Item
是預設成員,可以使用單個 String
引數。這種語法的效用值得懷疑。