Объект 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
См. также
- Свойство Count
- Объекты (Visual Basic для приложений)
- Справочник по библиотеке объектов для Office (элементы, свойства, методы)
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.