從集合中檢索專案

可以通過呼叫 .Item 函式從 Collection 中檢索專案。

句法:

.Item(index)
引數 描述
指數 要從 Collection 中檢索的專案。如果傳遞的值是數字型別或帶有數字子型別的 Variant,則它將被解釋為數字索引。如果傳遞的值是包含字串的 StringVariant,則它將被解釋為鍵。如果傳遞了 Collection 中不存在的 String 鍵,則會產生執行時錯誤 5:無效的過程呼叫或引數。如果傳遞的數字索引在 Collection 中不存在,則會產生執行時錯誤 9:下標超出範圍

筆記:

  • .ItemCollection 的預設成員。這允許語法的靈活性,如下面的示例用法所示。
  • 數字索引是從 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 引數。這種語法的效用值得懷疑。