VBA Loop Through Array / для каждого элемента в массиве

Из этого туториала Вы узнаете, как перебирать массивы в VBA.

Существует два основных способа перебора массивов с помощью VBA:

  • Для каждой петли - Цикл For Each будет перебирать каждый элемент в массиве.
  • Для следующего цикла - Цикл For Next Loop будет перебирать указанные начальную и конечную позиции массива (мы можем использовать функции UBound и LBound для перебора всего массива).

Для каждого элемента в массиве

В Для каждой петли позволяет вам перебирать каждый элемент массива.

12345678910111213141516171819 Sub LoopForArrayStatic ()'объявить вариантный массивDim strNames (от 1 до 4) как строка'заполнить массивstrNames (1) = "Боб"strNames (2) = "Питер"strNames (3) = "Кейт"strNames (4) = "Сэм"'объявить вариант для хранения элемента массиваТусклый элемент как вариант'перебирать весь массивДля каждого элемента в strNames'показать элемент в окне отладки.Debug.Print itemПетляКонец подписки

Вышеупомянутая процедура будет перебирать все имена в массиве.

Для следующего цикла

Цикл For Next Loop будет перебирать каждый элемент в указанной начальной и конечной позиции массива.

Перебрать часть массива

Вы можете вручную указать начальную и конечную позиции для вашего цикла. Это может быть уместно, если вы знаете размер своего массива и / или хотите перебрать только часть массива.

12345678910111213141516 Sub LoopForNextStatic ()'объявить вариантный массивDim strNames (от 1 до 4) как строка'заполнить массивstrNames (1) = "Боб"strNames (2) = "Питер"strNames (3) = "Кейт"strNames (4) = "Сэм"'объявить целое числоDim i как целое число'цикл от позиции 2 до позиции 3 массиваДля i = от 2 до 3'показать имя в ближайшем окнеDebug.Print strNames (i)Далее яКонец подписки

В приведенном выше примере мы перебрали позиции 2 и 3 массива. Немедленное окно вернет имена следующим образом.

Цикл по всему массиву

Затем мы будем использовать функции UBound и LBound для перебора всего массива. Это чрезвычайно полезно, если начальная и конечная позиции массива могут измениться (например, динамический массив):

123456789101112131415161718 Sub LoopForNextDynamic ()'объявить вариантный массивDim strNames () как строка'инициализировать массивReDim strNames (от 1 до 4)'заполнить массивstrNames (1) = "Боб"strNames (2) = "Питер"strNames (3) = "Кейт"strNames (4) = "Сэм"'объявить целое числоDim i как целое число'цикл от нижней границы массива до верхней границы массива - весь массивДля i = LBound (strNames) To UBound (strNames)'показать имя в ближайшем окнеDebug.Print strNames (i)Далее яКонец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave