Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_1 Mетодичка-Exel_укр_2.doc
Скачиваний:
3
Добавлен:
17.09.2019
Размер:
1.43 Mб
Скачать

6. Масиви

Масив — це змінна, в якій зберігається одночасно декілька значень однакового типа. Формальне визначення масиву таке: він є сукупністю однотипних індексованих змінних.

Кількість індексів, що використовуються у масиві також може бути різною. Найчастіше використовуються масиви з одним або двома індексами, рідше — з трьома, ще більша кількість індексів зустрічається украй рідко. У VBA допускається використовувати до 60 індексів. Про кількість індексів масиву зазвичай говорять як про розміри масиву. Масиви з одним індексом називають одновимірними, з двома — двовимірними і так далі. Масиви з великою кількістю вимірів можуть займати дуже великі об'єми пам'яті, тому слід бути обережними в їх вживанні.

Перш ніж використовувати масив, потрібно обов'язково оголосити його за допомогою опе­ратора Dim і вказати при цьому типи значень, що зберігаються в масиві. Всі значення в масиві зобов'язані належати до одного типа даних. Це обмеження на практиці можна обійти, використавши при оголошенні масиву тип Variant — в цьому випадку елементи масиву зможуть набувати значень різних типів. Синтаксис оператора оголошення масиву наступний:

Dim <ім'яМасиву> (<розмір1>, < розмір2>, ...) As <типДаних>,

де вказані в дужках величини < розмір1>, < розмір2> задають розміри масиву — кількість індексів і максимально допустиме значення для кожного конкретного індексу. При цьому індексування елементів масиву за умовчанням починається з нуля. Наприклад,

Dim Array1(9) As Integer - визначає одновимірний масив з 10 елементів, що є змінними цілого типа, а оголошення

Dim Array2(4, 9) As Variant - визначає двовимірний масив із п’ятдесяти (5x10) елементів, змінними універсального типа variant, що є.

( Зауваження )

Як стандартне значення нижньої границі масиву (індексу) може використовуватися не лише нуль. Аби змінити це стандартне значення, потрібно скористатися оператором Option Base. Наприклад, якщо помістити в початок модуля оператора Option Base 1, то індексування елементів масивів за умовчанням починатиметься не з нуля, а з одиниці.

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

Dim < ім'яМасиву > (<мін1> То <макс1>, ...) As <типДаних>

Наприклад,

DIM Sales(5) As Currency – за умовчанням індекс починається з 0 до 5 тобто 6 – елементів: Sales(0), Sales(1).Sales(5) типу Currency.

DIM AS(700 to 799) As Integer – містить 100 елементів типу Integer (AS(700), AS(701), AS(702),…, AS(799))

DIM CC(4, 1 to 3) As Single – масив 5х3 типа Single

DIM ZZ(3 to 23; 5 to 7) As Date – масив 21*3 типу Date

Наприклад, якщо збираємося працювати з масивом метеорологічних даних, що є середніми денними температурами за останні два тижні, тому може виявитися зручним дати наступне визначення масиву:

Dim Temperature (-14 То 0) As Single

При цьому, наприклад, Temperature(-2) відповідатиме позавчорашній темпе­ратурі, а для визначення потрібного індексу для дня, що цікавить, буде доста­тньо використовувати різницю дат.

У наведених раніше прикладах йшлося про масиви фіксованого розміру, кількість елементів в яких явно вказано під час опису масиву в операторові Dim. Такі масиви називаються статичними. У VBA допускається використання і динамічних масивів, розміри яких при опису не фіксуються. Визначення розміру динамічного масиву може бути зроблене безпосередньо під час виконання програми.

При визначенні динамічного масиву в операторові Dim після імені масиву стоять лише порожні дужки і опис типа змінних. Кількість індексів і діапа­зон їх зміни не задається. Проте перш ніж використовувати масив, потрібно застосувати оператор ReDim, який задасть розмірність і діапазони зміни індексів динамічного масиву.

Синтаксис оголошення і визначення розмірів динамічного масиву такий:

Dim < ім'яМасиву >() As <типДанных>

ReDim < ім'яМасиву > (<розмір1>, <розмір2> ...)

От як може виглядати оголошення, визначення розмірів і використання динамічного масиву, а потім подальша зміна розмірності і розмірів цього ж масиву:

Dim dArray() As Variant

ReDim dArray(1, 2)

dArray(0, 0) = 2

dArray(0, 1) = 3

k = dArray(0, 0) + dArray(0, 1)

ReDim dArray(k)

dArray (0) = "Строка!."

В даному прикладі масив dArray спочатку визначається як двовимірний масив з шести елементів, а потім — як одновимірний масив, причому верхня границя індексу задається значенням змінної k.

( Зауваження )

Аби визначити поточний нижню або верхню границю масиву, можна використовувати функції LBound і UBound, відповідно.

За умовчанням при зміні розмірів масиву йому заново виділяється пам'ять і поточні значення його елементів втрачаються. Аби не втратити поточні значення масиву при зміні його розмірів, використовується ключове слово Preserve. Наприклад, аби збільшити розмір масиву dArray на один елемент, не втративши значень існуючих елементів, можна таким чином:

ReDim Preserve dArray(UBound(dArray) + 1) збільшити розмір масиву dArray на один елемент, де UBound(dArray) визначення найбільшого індексу існуючого масиву dArray()

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]