Использование VBA для доступа к первому листу на рабочем листе - это «Рабочие листы» (1). Первым элементом в ListBox является myListBox.List (0). Я слышал, что коллекции основаны на 1, но я не знаю, что это такое. Массивы VBA основаны на 0. Строковые функции Excel, такие как MID, основаны на 1. Есть ли общий принцип относительно того, что основано на 0 или 1, или вы могли бы предоставить список каждого?
microsoft-excel-2007
vba
Ноумен
источник
источник
Ответы:
В VBA доступно 3 основных типа группирующих конструкций с различиями между индексами
Коллекции - 1 основанный индекс
Коллекции Excel:
Основным преимуществом коллекций является удобство доступа к элементам по имени
Массивы - по умолчанию на основе 0, но первый индекс можно изменить на любое число (показано ниже)
После определения он будет содержать только один тип элементов:
Dim x() As Long
Dim x() As Variant
Варианты могут быть объектами любого типа, включая рабочие книги, листы, диапазоны, массивы.
Dim x As Variant: x = Array(1) '1 Variant variable containing 1 array
Dim y(2) As Variant '1 Variant array containing 3 arrays
y(0) = Array(1): y(1) = Array(2): y(2) = Array(3)
Основным преимуществом массивов является производительность при доступе к элементам по индексу
For index=0 To 10
петли быстрее, чемFor-Each
петлиСловари - не индексируются, но индексы можно моделировать с помощью клавиш
ListBox - это сложный объект, доступ к которому можно получить из коллекции элементов управления на основе 0
Свойство .List () ListBox является массивом на основе 0
Другие заметки
Основанные на 0 индексы являются стандартом для других языков
VBA представила концепцию на основе 1, чтобы сделать ее более понятной для новых пользователей:
Некоторые практические примеры различия между их индексами:
Дальнейшее чтение:
источник