В этом руководстве будет показано, как создавать и использовать массивы объектов в VBA.
В VBA массивы - это переменные, которые хранят несколько значений. Вы можете хранить объекты VBA в массивах так же, как и любые другие данные.
Объявление массива объектов
В этом примере мы объявим массив листов VBA:
1 | Тусклые арки (3) в виде рабочего листа |
Заполнение массива статических объектов
Объявите массив объектов статическим, а затем вы можете заполнить массив листами, выбранными из книги.
12345678 | Sub TestObjArray ()'определить массив как массив рабочего листаТусклые стрелки (от 1 до 3) в виде рабочего листа'добавляем 3 листа в массивset arWks (1) = Листы (1)установить arWks (2) = Листы (2)Установить arWks (3) = Листы (3)Конец подписки |
Заполнение массива динамических объектов
Вы можете объявить массив объектов динамическим, а затем подсчитать количество листов в книге перед назначением размера массива массиву объектов.
1234567891011121314 | Sub TestObjArray ()'определить массив как массив рабочего листаDim arWks () как рабочий лист'подсчитайте, сколько листов в файле, и уменьшите размер массиваDim n как целое числоDim i как целое число'подсчитайте листы и минус один, чтобы установить границы для массиваn = Application.Sheets.Count - 1ReDim arWks (n)'заполните массив рабочего листа всеми листами в книгеДля i = LBound (arWks) в UBound (arWks)Установите arWks (i) = ActiveWorkbook.Sheets (i + 1)Далее яКонец подписки |
В приведенном выше примере мы сначала объявляем массив рабочего листа. Затем мы подсчитываем количество листов в книге и присваиваем это значение минус единице UBound массива. Это связано с тем, что LBound массива начинается с 0. Наконец, мы перебираем листы и добавляем каждый лист в массив.
Использование массива объектов в коде VBA
После того, как мы заполнили массив Worksheet, мы можем использовать VBA для цикла по массиву.
123456789101112131415161718 | Sub TestObjArray ()'определить массив как массив рабочего листаDim arWks () как рабочий лист'подсчитайте, сколько листов в файле, и уменьшите размер массиваDim n как целое числоDim i как целое число'подсчитайте листы и минус один, чтобы установить границы для массиваn = Application.Sheets.Count - 1ReDim arWks (n)'заполните массив рабочего листа всеми листами в книгеДля i = LBound (arWks) в UBound (arWks)Установите arWks (i) = ActiveWorkbook.Sheets (i + 1)Далее я'сделать что-нибудь с каждым листом в массивеДля i = LBound (arWks) в UBound (arWks)arWks (i) .Range ("A1: H1"). Font.Bold = TrueДалее яКонец подписки |
В приведенном выше примере мы перебираем массив и выделяем жирным шрифтом первую строку каждого листа в массиве.