Статични и динамични масиви в VBA

Какво е масив?

Масивът е съвкупност от елементи от един и същи вид. които имат общо име. Позоваването на тези елементи се осъществява в техния индекс. Казано по-просто, това е много променливи, събрани в една и съща група за определен тип. За по-ясно разбиране на Вземете, например, перлени мъниста, една черна, другата бяла. Така че, мъниста на черни и бели перли са масиви, групирани по цвят, черни и бели, и перлени са елементите на тези масиви.
Масивите са едномерен (линеен), същото гореспоменатите мъниста и многоизмерно - двуизмерно (матрица, 2D), триизмерна и т.н. Статичен - брой на елементите в масива е обявен на етапа на проектиране и не се променя по време на изпълнение, както и динамичен - броя на елементите и размера варира по време на операцията по програма.

Масив в VB е обявен като нормална променлива, след ключовата дума Dim или обществено, с единствената разлика, че след името на променливата (преди ключовата дума "като") трябва да бъдат в скоби.
Дим Mas () като цяло

Статичните масиви са декларирани с посочване на горните и долните граници:
Дим Mas (2 до 50) като цяло

Декларирам масив и можете да посочите само броя на елементите:
Дим Mas (50) като цяло

В този случай, по-ниската граница е настроен по подразбиране на 0. Ако искате, че първият индекс е 1, тогава ще трябва да в началото на модула (преди първата сесия) във всички масиви осигуряват следното:
Вариант 1 Base

Динамичния обхват - не е предварително определен брой елементи и се определя без граници в скоби:
Дим MyDynMas () като цяло

Но динамичен масив може да се използва само след определяне на границите на програмата след ключовата дума ReDim:
Дим MyDynMas () като цяло
"Някои изчисления код или граници
I = 4
ReDim MyDynMas (I)

след първостепенни брой масив, всички елементи са нулеви. С цел запазване на стойностите на елементите на масива, след ReDim е необходимо да добавите ключовата дума резерват:

Също така е възможно да се замени измерение на матрицата, като едномерен до две-три-измерна:
Дим MyDynMas () като цяло
"Някои изчисления код или граници
I = 4
ReDim MyDynMas (I)

но имайте предвид, че когато се наложи над измерение на масива, използвайте резерват дума за запазване на стойностите на елементите - това е невъзможно!

Да разгледаме примери за работа с статични и динамични масиви.

Пример 1:
Dan двумерен масив с три елемента и 3x4 матрица (3 реда и 4 колони). Необходимо е да се размножават всеки елемент на едномерен масив с всички редици от елементи, т.е. Първият елемент размножават всички елементи на първия ред на матрицата, 2-ри до втория ред и т.н. Резултати в дисплей матрица в съобщението.


"Напълнете масив
Mas (1) = 2: Mas (2) = 4: Mas (3) = 6

Matr (1, 1) = 4: Matr (1, 2) = 5: Matr (1, 3) = 1: Matr (1, 4) = 7
Matr (2, 1) = 12: Matr (2, 2) = 10: Matr (2, 3) = 2: Matr (2, 4) = 9
Matr (3, 1) = 24: Matr (3, 2) = 11: Matr (3, 3) = 6: Matr (3, 4) = 3

ПРИМЕР 2:
Мерен масив не е известна дължина завършен както следва Mas (I, J) = I * й. размерите на масиви са въведени от потребителя чрез InputBox форма. Резултати изход съобщението.

Под DynMasTest ()
Дим съобщ Както стринга
Дим I, J, колона, ред Като цяло число
Дим DynMas (), докато

Съобщ = "Резултат" Chr (13)

колона = InputBox ( "Въвеждане на броя на колоните на масива," _
"Пример за създаване на динамичен решетка", 2)
ред = InputBox ( "Въведете броя на масив от низове," _
"Пример за създаване на динамичен решетка", 2)

ReDim Запазване DynMas (колона, ред)

За I = 1 до колона
За J = 1 до ред
DynMas (I, J) = I * й
Msg = Msg CStr (DynMas (I, J)) Chr (9)
Следваща й
Msg = Msg Chr (13)
Следваща аз
MsgBox съобщ
End Sub

И накрая, за да се научат (получите) дължината на масива, използвайте функцията UBound (). тип запис UBound (Mas) връща броя на едномерен масив от елементи. Ако е необходимо да се знае дължината на многомерен масив, функцията е под формата UBound (Matr, 2) - връща броя на елементите на второто измерване, UBound (Matr, 3), - трето и т.н. Записване същото UBound (Matr, 1) е еквивалентно UBound (Mas).

Под GetLengthMas ()
Дим Matr (3, 4, 5) Като цяло число

MsgBox "Размер на масив" UBound (Matr, 1) "X" UBound (Matr, 2) "X" UBound (Matr, 3) _
Chr (13) "Общо артикули" UBound (Matr, 1) * UBound (Matr, 2) * UBound (Matr, 3)
End Sub