Масиви VBA в Excel: типи та як використовувати з прикладом

⚡ Розумний підсумок

Масиви Excel VBA зберігають групу пов'язаних значень одного типу даних під одним іменем, доступ до яких здійснюється за допомогою індексу. На цій сторінці пояснюються статичні та динамічні масиви, одно-, дво- та багатовимірні масиви, синтаксис оголошення та наведено приклад завантаження напоїв.

  • 📦 Концепція масиву: Одна іменована комірка пам'яті, яка містить багато значень одного типу даних, розділених індексом.
  • 🎯 переваги: Масиви групують пов'язані дані, зменшують кількість змінних та пришвидшують отримання та сортування даних.
  • 📌 Статичний масив: Оголошено з фіксованим розміром, наприклад Dim ArrayMonth(12) As String, коли відома кількість елементів.
  • 🔄 Динамічний масив: Оголошено порожнім за допомогою Dim ArrayMonth() та пізніше змінено розмір за допомогою ReDim, коли кількість елементів невідома.
  • 📐 розміри: Масив використовує один, два або більше індексів для моделювання окремих списків, таблиць або багаторівневих даних.
  • 🧪 Приклад роботи: Командна кнопка завантажує чотири назви напоїв з масиву в комірки робочого аркуша за допомогою Sheet1.Cells.

Масиви Excel VBA

Що таке масив VBA?

Масив визначається як область пам’яті, яка може зберігати більше одного значення. Усі значення мають бути одного типу даних. Скажімо, ви хочете зберегти список ваших улюблених напоїв в одній змінній, ви можете використовувати для цього масив VBA.

Використовуючи масив, ви можете звертатися до пов’язаних значень за однаковими іменами. Ви можете використовувати індекс або індекс, щоб відрізнити їх. Окремі значення називаються елементами масиву Excel VBA. Вони є суміжними від індексу 0 до найвищого значення індексу.

Цей посібник передбачає, що ви використовуєте Microsoft перевершувати версія 2013. Знання все ще застосовуються до інших версій Microsoft Excel також.

Які переваги масивів?

Перш ніж писати код для масивів, варто зрозуміти, чому варто використовувати масиви. Нижче наведено деякі переваги, які пропонує функція масивів VBA.

  1. Згрупуйте логічно пов’язані дані разом – скажімо, ви хочете зберегти список студентів. Ви можете використовувати єдину змінну масиву, яка має окремі розташування для категорій учнів, наприклад дитячий садок, початкова, середня, середня школа тощо.
  2. Масиви полегшують написання підтримуваного коду. Для тих самих логічно пов’язаних даних це дозволяє визначати одну змінну замість визначення кількох змінних.
  3. Краща продуктивність – після визначення масиву дані швидше можна отримувати, сортувати та змінювати.

Типи масивів у VBA

VBA підтримує два типи масивів, а саме;

  • Статичний – Ці типи масивів мають фіксовану заздалегідь визначену кількість елементів, які можна зберігати. Неможливо змінити розмір типу даних статичного масиву. Це корисно, коли ви хочете працювати з відомими об’єктами, такими як кількість днів у тижні, стать тощо.Наприклад: Dim ArrayMonth(12) як рядок
  • Dynamic – Ці типи масивів не мають фіксованої заздалегідь визначеної кількості елементів, які можна зберігати. Це корисно під час роботи з сутностями, кількість яких не можна заздалегідь визначити.Наприклад: Dim ArrayMonth() як варіант

Щойно ви визначите, який тип відповідає вашим даним, наступним кроком буде синтаксис оголошення для кожного з них.

Синтаксис для оголошення масивів

Статичні масиви

Синтаксис для оголошення СТАТИЧНА масивів виглядає наступним чином:

Dim arrayName (n) as datatype

ТУТ,

Code дію
Тип даних Dim arrayName (n).
  1. Він оголошує змінну масиву під назвою arrayName із розміром n і типом даних. Розмір означає кількість елементів, які може зберігати масив.

Dynamic arrays

Синтаксис для оголошення ДИНАМІКА масивів виглядає наступним чином:

Dim arrayName() as datatype
ReDim arrayName(4)

ТУТ,

Code дію
Тип даних Dim arrayName ().
  1. Він оголошує змінну масиву під назвою arrayName без вказівки кількості елементів
ReDim arrayName(4)
  1. Він визначає розмір масиву після визначення масиву.

Розміри масиву

Масив може бути одновимірним, двовимірним або багатовимірним.

  • Один вимір: у цьому вимірі масив використовує лише один індекс. Наприклад, кількість людей кожного віку.
  • Два виміри: у цьому вимірі масив використовує два індекси. Наприклад, кількість учнів у кожному класі. Це вимагає кількості класів і кількості учнів у кожному класі
  • Багатовимірність: у цьому вимірі масив використовує більше двох індексів. Наприклад, температура вдень. (30, 40, 20).

Як використовувати масив у Excel VBA

Після вивчення теорії ми можемо використовувати масив у реальній робочій книзі. Ми створимо просту програму. Ця програма заповнює аркуш Excel даними з масиву змінної. У цьому прикладі масиву VBA ми виконаємо наступні дії.

  • Створіть новий Microsoft Робоча книга Excel і збережіть її як книгу Excel із підтримкою макросів (*.xlsm)
  • Додайте командну кнопку до книги
  • Встановіть властивості назви та підпису командної кнопки
  • Програмування VBA, який заповнює аркуш Excel

Давайте виконувати цю вправу крок за кроком,

Крок 1 – Створіть нову книгу

  1. відкритий Microsoft перевершувати
  2. Збережіть нову книгу як VBA Arrays.xlsm

Крок 2 – Додайте командну кнопку

Примітка: У цьому розділі передбачається, що ви знайомі з процесом створення інтерфейсу в Excel. Якщо ви не знайомі, прочитайте підручник Елемент керування формами VBA Excel і елемент керування ActiveX. Він покаже вам, як створити інтерфейс

  1. Додати командну кнопку на аркуш

Використання масиву в Excel VBA

  1. Встановіть для властивості name значення cmdLoadBeverages
  2. Встановіть для властивості caption значення Load Beverages

Тепер ваш графічний інтерфейс має бути таким

Використання масиву в Excel VBA

Крок 3 – Збережіть файл

  1. Натисніть кнопку зберегти як
  2. Виберіть книгу Excel із підтримкою макросів (*.xlsm), як показано на зображенні нижче

Використання масиву в Excel VBA

Крок 4 – Напишіть код

Тепер ми напишемо код для нашої програми

  1. Клацніть правою кнопкою миші кнопку «Завантажити напої» та виберіть «Переглянути код».
  2. Додайте наступний код до події клацання cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

ТУТ,

Code дію
Dim Drinks (1-4) як рядок
  • Він оголошує змінну масиву під назвою Drinks. Індекс першого масиву дорівнює 1, а індекс останнього масиву – 4.
Напої(1) = «Пепсі»
  • Призначає значення Pepsi першому елементу масиву. Інший подібний код робить те саме для інших елементів у масиві.
Sheet1.Cells(1, 1).Value = «Мої улюблені напої»
  • Записує значення «Мої улюблені напої» в адресу клітинки A1. Sheet1 посилається на аркуш, а Cells(1,1) посилається на рядок номер 1 і стовпець 1 (B)
Sheet1.Cells(2, 1).Value = Drinks(1)
  • Записує значення елемента масиву з індексом 1 у рядок номер два стовпця 1

Тестуємо наш додаток

Після того, як код буде налаштовано, останнім кроком буде запуск кнопки та підтвердження того, що масив заповнює аркуш. Виберіть вкладку розробника та переконайтеся, що кнопка режиму конструктора вимкнена. Індикатор позначає білий фон, а не кольоровий (зеленуватий). (Див. зображення нижче)

Тестування програми в Excel VBA

Натисніть кнопку «Завантажити напої».

Ви отримаєте такі результати

Тестування програми в Excel VBA

Завантажте Excel із кодом вище

Завантажте вищевказаний Excel Code

Поширені запитання

Статичний масив має фіксований розмір, встановлений під час оголошення, наприклад, Dim Arr(12). Динамічний масив оголошується порожнім за допомогою Dim Arr() та змінюється пізніше за допомогою ReDim, коли кількість елементів заздалегідь невідома.

ReDim встановлює або змінює розмір динамічного масиву після його оголошення. Додавання ключового слова Preserve, як у ReDim Preserve Arr(10), зберігає існуючі значення під час зміни розміру; без Preserve всі збережені значення очищаються.

Використовуйте функції LBound та UBound. LBound повертає найнижчий індекс, а UBound – найвищий. Кількість елементів дорівнює UBound(Arr) мінус LBound(Arr) плюс один, що працює як для статичних, так і для динамічних масивів.

Так. Помічники штучного інтелекту, такі як Copilot, генерують оголошення масивів та цикли зі звичайного запиту, наприклад, завантажують десять назв продуктів у стовпець. Розробник вставляє код у редактор і тестує його на копії робочої книги.

Так. Помічники ШІ зчитують помилку «Subscript out of range» та код, потім вказують на індекс, який перевищує межі масиву, та пропонують виправлення, таке як коригування розміру ReDim або лічильника циклів. Розробник застосовує зміну та повторно тестує її.

Підсумуйте цей пост за допомогою: