Поделиться через


Объект Collection

Объект Collection — это упорядоченный набор элементов, который может называться блоком.

Замечания

Объект Collection предоставляет удобный способ ссылки на связанную группу элементов как на один объект. Элементы или элементы в коллекции должны быть только связаны тем фактом, что они входят в коллекцию. Элементы коллекции могут иметь разные типы данных.

Коллекция может создаваться таким же способом, как и другие объекты. Например:

Dim X As New Collection

После создания коллекции члены могут быть добавлены с помощью метода Add и удалены с помощью метода Remove . Определенные элементы можно вернуть из коллекции с помощью метода Item , а всю коллекцию можно выполнить итерацию с помощью параметра For Each... Следующая инструкция.

Пример

В этом примере создается объект Collection (MyClasses), а затем создается диалоговое окно, в котором пользователи могут добавлять объекты в коллекцию.

Чтобы узнать, как это работает, выберите команду Class Module в меню Вставка и объявите общедоступную переменную с именем InstanceName на уровне модуля Class1 (тип PublicInstanceName) для хранения имен каждого экземпляра. Оставьте Class1 в качестве имени по умолчанию. Скопируйте и вставьте следующий код в раздел Общие другого модуля, а затем запустите его с оператора ClassNamer в другой процедуре.

(Этот пример работает только с ведущими приложениями, которые поддерживают классы.)

Sub ClassNamer()
    Dim MyClasses As New Collection    ' Create a Collection object.
    Dim Num    ' Counter for individualizing keys.
    Dim Msg As String    ' Variable to hold prompt string.
    Dim TheName, MyObject, NameList    ' Variants to hold information.
    Do
        Dim Inst As New Class1    ' Create a new instance of Class1.
        Num = Num + 1    ' Increment Num, then get a name.
        Msg = "Please enter a name for this object." & vbNewLine _
         & "Press Cancel to see names in collection."
        TheName = InputBox(Msg, "Name the Collection Items")
        Inst.InstanceName = TheName    ' Put name in object instance.
        ' If user entered name, add it to the collection.
        If Inst.InstanceName <> "" Then
            ' Add the named object to the collection.
            MyClasses.Add item := Inst, key := CStr(Num)
        End If
        ' Clear the current reference in preparation for next one.
        Set Inst = Nothing
    Loop Until TheName = ""
    For Each MyObject In MyClasses    ' Create list of names.
        NameList = NameList & MyObject.InstanceName & vbNewLine
    Next MyObject
    ' Display the list of names in a message box.
    MsgBox NameList, , "Instance Names In MyClasses Collection"

    For Num = 1 To MyClasses.Count    ' Remove name from the collection.
        MyClasses.Remove 1    ' Since collections are reindexed automatically, remove the first member on each iteration.
    Next
End Sub

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.