Для выполнения итерации
For Each
требуется специальное значение атрибута-члена, а свойство или функция NewEnum
, возвращающая IUnknown
.
Каждый класс коллекции, который может быть повторен с циклом For Each
, имеетскрытый элемент [_NewEnum]
(квадратные скобки требуются для доступа к скрытому элементу, поскольку префикс подчеркивания недопустим для идентификатора в VBA.
Настройка модуля и атрибутов элемента невозможна непосредственно вVBE, поэтому вам нужно удалить / экспортировать модуль, изменить его, например, в Notepad ++, сохранить изменения, а затем повторно импортировать его в ваш проект.
Или иметь Rubberduck (заявление об отказе:Я участвую в этом проекте с открытым исходным кодом), сделайте это для вас, используя аннотации (или «волшебные комментарии»):
'@Enumerator
'@Description("Gets an enumerator that iterates through the internal object collection.")
Public Property Get NewEnum() As IUnknown
Set NewEnum = this.Items.[_NewEnum]
End Function
'@DefaultMember
'@Description("Gets/sets the element at the specified index.")
Public Property Get Item(ByVal index As Long) As ItemType
Set Item = this.Items(index)
End Property
Затем выполните синтаксический анализ проекта ( Ctrl + `) и вызовите Результаты проверки окно инструментов ( Ctrl + Shift + i ) - там должно быть число "Отсутствующий атрибут »Результаты в разделе« Rubberduck Oppor »«Настройки»:

Нажмите «Исправить все вхождения в модуле» на нижней панели, чтобы синхронизировать скрытые атрибуты с комментариями аннотации.
Если у вас естьРезультаты «Отсутствует аннотация», Rubberduck определил, что модуль / элемент имеет значение не по умолчанию для данного атрибута, и может аналогичным образом добавить комментарий аннотации, который отображает / документирует его с комментарием.
Code Explorer ( Ctrl + R ), панель инструментов Rubberduck и собственный обозреватель объектов VBE ( F2 )) будет отображать содержимое атрибута VB_Description
, поэтому аннотации @Description
особенно полезны для любой открытой процедуры.
Обозреватель объектов:

Code Explorer:

Панель инструментов Rubberduck:
