Масиви в vba

Масиви використовуються для зберігання в пам'яті багатьох значень. Замість того, щоб оголошувати безліч схожих один на одного змінних, часто набагато зручніше скористатися масивом.

Dim MyArray (2) As Integer

Такий масив може зберігати три цілочисельних елемента. 2 - це верхня межа масиву (upper bound). Кількість елементів, яке може зберігати масив, - від 0 до верхньої межі включно.

В принципі, тип даних для масиву можна не оголошувати:

В цьому випадку для елементів масиву буде використаний тип Variant. Такий масив зможе зберігати в собі елементи різних типів даних, але вимоги до пам'яті у нього будуть вище і працювати він буде трохи повільніше.

Присвоїти значення окремого елементу масиву (в нашому випадку - першому) можна дуже просто:

А потім це значення можна буде витягти:

MsgBox MyArray (0)

Масиви цілком можуть бути багатовимірними:

Dim MyArray (4, 9)

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

Dim MyArray () '- оголошуємо масив без верхньої межі, цей рядок можна' пропустити

ReDim MyArray (4) '- змінюємо розмір масиву

Команда ReDim не тільки змінює розмір масиву, але і видаляє з нього все старі значення. Щоб старі значення зберегти, використовується ключове слово Preserve:

ReDim Preserve MyArray (7)

Однак якщо новий розмір масиву менше, ніж кількість поміщених в нього елементів, слово Preserve не допоможе - частина даних все одно буде втрачена.

Масиви можна створювати і заповнювати одночасно за допомогою вбудованої функції Array ():

MyArray = Array (100, 200, 300, 400, 500)

Вказувати розмір масиву необов'язково - він буде автоматично налаштований відповідно до кол-вом переданих елементів.

Очистити масив можна командою Erase:

Масив фіксованої довжини просто очищається, динамічний масив разініціалізіруется - його доведеться форматувати (визначати розмір) заново.

У динамічних масивах часто невідомо, скільки елементів в масиві. Для визначення кількості елементів використовується функція UBound () (якщо масив одновимірний або вас цікавить розмір першого виміру, то вимір передавати не треба):

UBound (імяМассіва [, вимір])

Як не дивно, але при програмуванні в VBA вам рідко доводиться стикатися з масивами. Замість них в об'єктних моделях додатків Office зазвичай використовуються колекції. Колекції - це спеціальні об'єкти, які призначені для зберігання наборів однакових елементів. Наприклад, в Word передбачена колекція Documents для зберігання елементів Document - тобто всіх відкритих документів, в Excel - колекції Workbooks (відкриті книги) і Worksheets (листи в книзі) і т.п. Колекції зазвичай зручніше, ніж масиви: вони спочатку безрозмірні і в них передбачений стандартний набір властивостей і методів (метод Add () для додавання нового елемента, властивість Count для отримання інформації про кількість елементів, метод Item () для отримання посилання на потрібний елемент) Детальніше про роботу з колекціями буде розказано в главі 4 цієї книги.

Схожі статті