Все очень просто массивы енто круто
Visual Basic предоставляет довольно мощные средства для работы с такими массивами. Опеределяется такой массив следующим образом:
Dim myArray () As Byte
В отличие от массивов статичных размеров, когда обращаться к элементам можно сразу после его объявления, к элементам динамического массива сразу обращаться нельзя, т.к. они ещё не инициализированы. Для начала нужно указать его новую размерность. Для это в VB есть оператор ReDim. Работает он следующим образом:
ReDim myArray (4)
Теперь массив myArray имеет одну размерность с индексами от 0 до 4 (т.е. всего 5 элементов). Теперь к такому массиву можно обращаться точно так же, как и к статичному. Если в дальнейшем возникнет необходимость снова изменить размерность массива, можно ещё раз использовать ReDim.
Но! Здесь есть подводный камень! Давайте рассмотрим маленький примерчик:
Dim myLong As Long
Dim myArray() As Long ' объявляем массив
ReDim myArray (2) ' одна размерность [0,1,2]
myArray (1) = 234 ' присваиваем второму элементу чило 234
myLong = myArray (1) ' сохраняем его в переменной myLong
ReDim myArray (3) ' снова меняем размерность-теперь [0,1,2,3]
myLong = myArray (1) ' снова пытаемся сохранить второй элемент
На последней строке, переменной myLong присвоится 0 вместо 234! Это происходит потому, что оператор ReDim заново инициализирует (сбрасывает) все элементы массива к значению по умолчанию (как помните, для чисел - это 0, для строк ""). Но как же быть, если мы хотим изменить размеры массива, сохранив все старые элементы? Для этого нужно после оператора ReDim поставить слово Preserve. Примерно так:
ReDim Preserve myArray (3) ' сохраняем старые элементы
myLong = myArray (1) ' всё в порядке
Теперь всё в порядке.