Дополнительные команды работы с массивами
Для работы с массивами вы можете использовать еще некоторые команды.
Array (Список аргументов)- позволяет быстро заполнять массив. Например, в листинге 7.8. массив MyArray заполняется числами 1, 2, 6, 9 и 19, после чего первый элементмассива выводится в окне сообщения.
Dim MyArray
MyArray = Array(1, 2, 6, 9, 10)
MsgBox MyArray(0)
IsArray (Имя переменной) - возвращает True если переменная является массивом. Например, в листинге ниже мы объявляем две переменные - одну из них как массив, вторую - как обычную переменную. Далее мы используем оператор IsArray для проверки того, является ли переменная массивом. После чего программа выводит соответствующее сообщение. Здесь мы использовали оператор сравнения If, подробности о котором мы рассмотрим ниже.
Dim MyArray(10)
Dim MyArr
If IsArray(MyArray) Then _
MsgBox ("Переменная MyArray - массив") _
Else MsgBox ("Переменна MyArray - не массив")
If IsArray(MyArr) Then _
MsgBox ("Переменная MyArr - массив") _
Else MsgBox ("Переменна MyArr - не массив")
LBound (Имя Массива, Размерность) - возвращает нижнюю границу для указанной размерности массива.
UBound (Имя Массива, Размерность) - возвращает верхнюю границу для указанной размерности массива.
Рассмотрим пример. Создадим динамический двумерный массив, размерности которого заданы с помощью генератора случайных чисел. После этого с помощью операторовLBound и UBound узнаем размерности массива и выведем их в окнах сообщений. Далее - используем двойной цикл для заполнения массива случайными числами .
Dim MyArray()
ReDim MyArray(Int(Rnd * 5 + 5), Int(Rnd * 5 + 5))
MsgBox ("Двумерный массив MyArray:" + Chr(13) + _
"Первая размерность:" + _
Str(LBound(MyArray, 1)) + " -" + _
Str(UBound(MyArray, 1)) + Chr(13) + _
"Вторая размерность:" + _
Str(LBound(MyArray, 2)) + " -" + _
Str(UBound(MyArray, 2)))
For i = LBound(MyArray, 1) To UBound(MyArray, 1)
For j = LBound(MyArray, 2) To UBound(MyArray, 2)
MyArray(i, j) = Int(Rnd * 100)
Next j
Next i
В нашем случае команда LBound для обеих размерностей массива возвращает 0 так как по умолчанию нумерация элементов массива начинается с 0. А вот Uboundвозвращает границу каждой из размерностей, которая установлена случайным образом с помощью оператора ReDim. На рисунке вы можете видеть окно сообщения c информацией о границах массива.
Erase (Имя массива) - очистить массив. Элементы обычных массивов, содержащих числовые данные, обнуляются. Если мы применим команду Erase к массиву строк - каждый его элемент будет хранить строку нулевой длины (""). Применяя команду Erase к динамическому массиву, мы очищаем память, выделенную этому массиву командой ReDim. Причем, для повторного использования динамического массива, придется снова устанавливать его размерности. Если команда Erase применяется к объектному массиву, в каждый его элемент записывается специальное значение Nothing, которое означает пустую ссылку на объект.
Теперь, когда мы обсудили циклы For-Next и работу с массивами, поговорим о других типах циклов.