что такое item в vba
Метод Item
Возвращает определенный член объекта Collection либо по позиции, либо по ключу.
Синтаксис
объект. Item(index)
Синтаксис метода Item имеет следующий квалификатор объекта и часть.
Part | Описание |
---|---|
object | Обязательный. Выражение объекта, которое оценивает объект в списке Applies To. |
index | Обязательный. Выражение expression, задающее позицию элемента коллекции. Если числовое выражение, индекс должен быть числом от 1 до значения свойства Count коллекции. Если выражение строки, индекс должен соответствовать ключевому аргументу, указанному при добавлении участника в коллекцию. |
Примечания
Если значение, предоставленного в качестве индекса, не соответствует существующему члену коллекции, возникает ошибка. Метод Item является методом по умолчанию для коллекции. Поэтому следующие строки кода являются эквивалентными:
Пример
В этом примере используется метод Item для получения ссылки на объект в коллекции. Если считать объектом Collection, следующий код извлекает из коллекции ссылки на объекты, представляющие день рождения Билла Смита и день рождения Адама Смита, используя в качестве аргументов индекса Birthdays клавиши «SmithBill» и «SmithAdam».
Обратите внимание, что первый вызов явным образом задает метод Item, однако второй — нет. Оба вызова работают, поскольку метод Item является методом по умолчанию для объекта Collection. Ссылки, заданные и SmithBillBD SmithAdamBD использующие Set, можно использовать для доступа к свойствам и методам указанных объектов.
Чтобы запустить этот код, создайте соответствующую коллекцию и заполните ее по крайней мере двумя указанными элементами.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Метод item (VBA Add-In объектная модель)
Возвращает индексированный элемент коллекции.
Синтаксис
объект. Item (index)
Синтаксис метода Item включает следующие элементы:
Part | Описание |
---|---|
object | Обязательный. Выражение объекта, которое оценивает объект в списке Applies To. |
index | Обязательный. Выражение, указывающее положение элемента в коллекции. Если числовое выражение, индекс должен быть числом от 1 до значения свойства Count коллекции. Если выражение строки, индекс должен соответствовать ключевому аргументу, указанному при добавлении участника в коллекцию. |
В следующей таблице перечислены коллекции и соответствующие ключевые аргументы для использования с методом Item. Строка, которую вы передаете методу Item, должна соответствовать ключевому аргументу коллекции.
Collection | Аргумент key |
---|---|
Windows | Параметр свойства caption |
LinkedWindows | Настройка свойства Caption |
CodePanes | Данная коллекция не имеет уникальной строки. |
VBProjects | Параметр свойства name |
VBComponents | Настройка свойства Name |
References | Настройка свойства Name |
Свойства | Настройка свойства Name |
Примечания
Аргумент index может быть числовым значением или строкой, содержащей заголовок объекта.
Объекты, свойства и методы для управления связанными окнами, связанными рамками окон и закрепленными окнами включены в систему Macintosh для обеспечения совместимости с кодом, написанным в Windows. Однако эти элементы языка будут создавать ошибки во время выполнения в системе Macintosh.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
VBA Excel. Объект Collection (создание, методы, примеры)
Создание объекта Collection с помощью кода VBA Excel. Методы коллекции и синтаксис выражений с ними. Свойство Count и примеры кода.
Создание объекта Collection
Создать новый экземпляр Collection в коде VBA Excel можно двумя строками:
Лист автоматической вставки объектов, методов и свойств (лист подсказок) предоставит при написании кода VBA Excel простой доступ к методам Add, Item, Remove и свойству Count объекта Collection:
Лист подсказок отображается автоматически после ввода точки или, в иных случаях, вызывается сочетанием клавиш «Ctrl+Пробел».
Методы и свойство коллекции
Метод Add
Метод Add добавляет новый элемент в объект Collection.
Синтаксис метода Add:
Компоненты метода Add:
* Аргументы «До» и «После» не могут применяться одновременно. Если аргументу «До» или «После» присвоено числовое значение, оно должно быть в пределах диапазона от 1 до значения свойства Collection.Count. Если это строка, она должна соответствовать одному из ключей существующих в коллекции элементов.
Метод Item
Метод Item возвращает элемент объекта Collection по индексу позиции или по ключу.
Синтаксис метода Item объекта Collection:
Компоненты метода Item:
Метод Remove
Метод Remove удаляет элемент из объекта Collection по индексу позиции или по ключу.
Синтаксис метода Remove объекта Collection:
Компоненты метода Remove:
Свойство Collection.Count
Свойство Count объекта Collection возвращает количество элементов в коллекции.
Примеры кода с объектом Collection
Пример 1
Создание нового экземпляра объекта Collection, добавление в коллекцию трех элементов, определение количества элементов в коллекции, извлечение одного и того же элемента по индексу и по ключу:
Объект Collection
Объект Collection — это упорядоченный набор элементов, который может называться блоком.
Примечания
Объект Collection предоставляет удобный способ ссылки на связанную группу элементов как на один объект. Элементы или элементы в коллекции должны быть только связаны тем фактом, что они входят в коллекцию. Элементы коллекции могут иметь разные типы данных.
Коллекция может создаваться таким же способом, как и другие объекты. Например:
После создания коллекции можно добавлять членов с помощью метода Add и удалять с помощью метода Remove. Конкретные члены могут быть возвращены из коллекции с помощью метода Item, в то время как вся коллекция может быть итерирована с помощью for Each. Следующее утверждение.
Пример
В этом примере создается объект Collection (), а затем создается диалоговое окно, в котором пользователи могут добавлять объекты MyClasses в коллекцию.
Чтобы узнать, как это работает, выберите команду «Модуль класса» из меню Вставить и объявите об общедоступных переменной, называемой на уровне модуля InstanceName Класса1 (тип Public), чтобы держать имена каждого InstanceName экземпляра. Оставьте Class1 в качестве имени по умолчанию. Скопируйте и вклейте следующий код в общий раздел другого модуля, а затем запустите его с утверждения ClassNamer в другой процедуре.
(Этот пример работает только с ведущими приложениями, которые поддерживают классы.)
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Коллекции (Visual Basic)
Во многих приложениях требуется создавать группы связанных объектов и управлять ими. Существует два способа группировки объектов: создать массив объектов и создать коллекцию.
Массивы удобнее всего использовать для создания фиксированного числа строго типизированных объектов и работы с ними. Информацию о массивах см. в разделе Массивы.
Коллекции предоставляют более гибкий способ работы с группами объектов. В отличие от массивов, коллекция, с которой вы работаете, может расти или уменьшаться динамически при необходимости. Некоторые коллекции допускают назначение ключа любому объекту, который добавляется в коллекцию, чтобы в дальнейшем можно было быстро извлечь связанный с ключом объект из коллекции.
Коллекция является классом, поэтому необходимо объявить экземпляр класса перед добавлением в коллекцию элементов.
Если коллекция содержит элементы только одного типа данных, можно использовать один из классов в пространстве имен System.Collections.Generic. Универсальная коллекция обеспечивает строгую типизацию, так что в нее нельзя добавить другие типы данных. При извлечении элемента из универсальной коллекции не нужно определять или преобразовывать его тип данных.
Для примеров в этом разделе включите операторы Imports для System.Collections.Generic System.Linq пространств имен и.
Использование простой коллекции
В следующем примере создается список строк, а затем выполняется итерация по строкам с помощью цикла For Each. Следующий оператор.
Если содержимое коллекции известно заранее, для ее инициализации можно использовать инициализатор коллекции. Дополнительные сведения см. в разделе Инициализаторы коллекций.
Следующий пример аналогичен предыдущему за исключением того, что для добавления элементов в коллекцию используется инициализатор коллекции.
В приведенном ниже примере элемент удаляется из коллекции путем указания удаляемого объекта.
В приведенном ниже примере удаляются элементы из универсального списка. Вместо For Each оператора, a для. Используется оператор Next, который выполняет итерацию в убывающем порядке. Связано это с тем, что в результате работы метода RemoveAt элементы, следующие за удаленным элементом, получают меньшее значение индекса.
Виды коллекций
В этом разделе описываются следующие часто используемые классы коллекций:
класс Collection в Visual Basic.
Классы System.Collections.Generic
Универсальную коллекцию можно создать, используя один из классов в пространстве имен System.Collections.Generic. Универсальная коллекция применяется в том случае, если все элементы в коллекции имеют одинаковый тип данных. Универсальная коллекция обеспечивает строгую типизацию, позволяя добавлять данные только необходимого типа.
В таблице ниже перечислены некоторые из часто используемых классов пространства имен System.Collections.Generic.
Классы System.Collections.Concurrent
Классы пространства имен System.Collections.Concurrent следует использовать вместо соответствующих типов пространств имен System.Collections.Generic и System.Collections, если несколько потоков параллельно обращаются к такой коллекции. Дополнительные сведения см. в статьях Потокобезопасные коллекции и System.Collections.Concurrent.
Классы System.Collections
В следующей таблице перечислены некоторые из часто используемых классов пространства имен System.Collections :
Класс | Описание |
---|---|
ArrayList | Представляет массив объектов, размер которого динамически увеличивается по мере необходимости. |
Hashtable | Представляет коллекцию пар «ключ-значение», которые упорядочены по хэш-коду ключа. |
Queue | Представляет коллекцию объектов, которая обслуживается в порядке поступления (FIFO). |
Stack | Представляет коллекцию объектов, которая обслуживается в обратном порядке (LIFO). |
Пространство имен System.Collections.Specialized предоставляет специализированные и строго типизированные классы коллекций, такие как коллекции строк, связанные списки и гибридные словари.
Класс Collection в Visual Basic
Везде, где это возможно, следует использовать универсальные коллекции в пространстве имен System.Collections.Generic или пространстве имен System.Collections.Concurrent вместо класса Collection в Visual Basic.
Дополнительные сведения см. в разделе Collection.
Реализация коллекции пар «ключ-значение»
Универсальная коллекция Dictionary позволяет получить доступ к элементам коллекции с помощью ключа каждого элемента. Каждый элемент, добавляемый в словарь, состоит из значения и связанного с ним ключа. Извлечение значения по его ключу происходит быстро, так как класс Dictionary реализован как хэш-таблица.
В приведенном ниже примере используется метод ContainsKey и свойство Item[] Dictionary для быстрого поиска элемента по ключу. Item Свойство позволяет получить доступ к элементу в коллекции с elements помощью elements(symbol) кода в Visual Basic.
В приведенном ниже примере вместо этого используется метод TryGetValue для быстрого поиска элемента по ключу.
Использование LINQ для доступа к коллекции
Для доступа к коллекции можно использовать язык LINQ. Запросы LINQ обеспечивают возможности фильтрации, упорядочения и группировки. Дополнительные сведения см. в разделе Начало работы с LINQ в Visual Basic.
Сортировка коллекции
Каждый вызов метода CompareTo выполняет одно сравнение, используемое для сортировки. Написанный пользователем код в методе CompareTo возвращает значение для каждого сравнения текущего объекта с другим объектом. Возвращаемое значение меньше нуля, если текущий объект меньше другого объекта, больше нуля, если текущий объект больше другого объекта, и равняется нулю, если объекты равны. Это позволяет определить в коде условия для отношения «больше», «меньше» и «равно».
Определение настраиваемой коллекции
Вы можете определить коллекцию, реализовав интерфейс IEnumerable или IEnumerable. Дополнительные сведения см. в разделе Перечисление коллекции.
Iterators
Для вызова итератора используется оператор For Each. Следующий оператор. Каждая итерация цикла For Each вызывает итератор. При достижении оператора Yield в итераторе возвращается выражение, и текущее расположение в коде сохраняется. При следующем вызове итератора выполнение возобновляется с этого места.
Дополнительные сведения см. в разделе итераторы (Visual Basic).