Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Коллекции
С помощью класса Collection
можно создавать пользовательские коллекции объектов. Коллекция — это своего рода массив объектов, доступ к элементам которого осуществляется как по индексам, так и по ключам. Прежде чем использовать коллекцию необходимо создать экземпляр класса Collection
:
Dim MyClasses As New Collection
Добавить объекты в коллекцию позволяет метод Add()
. Формат метода:
MyClasses.Add Item[, Key][, Before][, After]
В параметре Item
указывается ссылка на объект. Необязательный параметр Key
задает уникальный ключ, с помощью которого можно будет получить доступ к объекту. Если ключ с указанным значением существует в коллекции, то возникает ошибка. Необязательный параметр Before
позволяет указать индекс или ключ объекта в коллекции перед которым будет вставлен добавляемый объект. Необязательный параметр After
позволяет указать индекс (нумерация начнается с 1
) или ключ объекта в коллекции после которого будет вставлен добавляемый объект. Если параметры Before
и After
указаны одновременно, то возникает ошибка. Пример добавления объекта в коллекцию:
MyClasses.Add C1, "Item1"
Доступ к объекту в коллекции выполняется с помощью метода Item()
. Формат метода:
<Элемент> = MyClasses.Item(<Индекс или ключ>)
Метод Item()
используется по умолчанию, поэтому его можно опустить:
<Элемент> = MyClasses(<Индекс или ключ>)
Удалить объект из коллекции позволяет метод Remove()
. Формат метода:
MyClasses.Remove <Индекс или ключ>
Получить количество объектов в коллекции позволяет свойство Count
.
Пример работы с коллекцией приведен в листинге 10.6.
Листинг 10.6. Коллекции
' Содержимое модуля класса MyClass
Private x_ As Integer
Property Let X(n As Integer)
x_ = n
End Property
Property Get X() As Integer
X = x_
End Property
...
' Содержимое модуля Module1
Sub Тест() ' Запускаем эту процедуру
Dim MyClasses As New Collection
Dim C1 As New MyClass, C2 As New MyClass
Dim Item As Variant
C1.X = 10
C2.X = 55
MyClasses.Add C1, "Item1"
MyClasses.Add C2, "Item2"
' Доступ по индексу
Debug.Print MyClasses(1).X ' 10
Debug.Print MyClasses(2).X ' 55
Debug.Print MyClasses.Item(1).X ' 10
Debug.Print MyClasses.Item(2).X ' 55
' Доступ по ключу
Debug.Print MyClasses("Item1").X ' 10
Debug.Print MyClasses("Item2").X ' 55
Debug.Print MyClasses.Item("Item1").X ' 10
Debug.Print MyClasses.Item("Item2").X ' 55
' Перебор элементов коллекции
For Each Item In MyClasses
Debug.Print Item.X
Next
' Количество элементов коллекции
Debug.Print MyClasses.Count ' 2
' Удаление элемента по индексу
MyClasses.Remove 1
Debug.Print MyClasses.Count ' 1
' Удаление элемента по ключу
MyClasses.Remove "Item2"
Debug.Print MyClasses.Count ' 0
End Sub
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов