Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_lektsii.doc
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
3.91 Mб
Скачать

3.3. Использование массива

После того как массив объявлен, в него считываются какие-то данные. Рассмотрим пример использования трехэлементного целочисленного массива:

Option Base 1

Sub ЦелочисленныйМассив()

Dim Vals(3) As Integer

Vals(1) = Int(100 * Rnd())

Vals(2) = Int(100 * Rnd())

Vals(3) = Int(100 * Rnd())

MsgBox "Выиграли лотерейные номера: " & _

Vals(1) & ", " & Vals(2) & ", " & Vals(3)

End Sub

В строке З объявлен одномерный массив Vals, содержащий 3 числа типа Integer. В строках 4–6 элементам этого массива присваиваются значения. Операторы присваивания для элементов массива выглядят точно так же, как операторы присваивания для переменных, за исключением того, что надо каждый раз указывать номер элемента, которому присваивается значение. Номер указан в круглых скобках после имени массива.

Обратите также внимание на формулу в правой части операторов присваивания (строки 4–6). В ней для генерации случайного целого числа от 0 до 100 используются встроенные функции VBA Rnd и Int. Первая из них генерирует действительное случайное число в интервале от 0 до 1 и может принимать один аргумент — «затравочное» число (подробности — в справочной системе VBA). Функция Int преобразует действительное число в целое, удаляя все цифры после десятичного разделителя (т.е. всегда округляя до меньшего). Умножая случайное число, полученное функцией Rnd, на 100 и отбрасывая дробную часть, получаем случайное целое, принадлежащее диапазону от 0 до 100. Применив эту формулу трижды, мы зададим в массиве Vals три произвольных целых числа. В строке 7 программы ЦелочисленныйМассив элементы массива, каждый со своим индексом, передаются в функцию MsgBox:

В следующем примере мы покажем, как использовать массив типа Variant. Тип Variant выбран из-за того, что в массиве хранятся разнотипные данные (строковое значение, дата, целое число).

Sub МассивVariant()

Dim Data(3) As Variant

Data(1) = "Иванов"

Data(2) = #3/21/1947#

Data(3) = Year(Date) - Year(Data(2))

MsgBox Data(1) & " , возраст " & Data(3) & _ ", родился " & Data(2)

End Sub

Здесь элементам массива присваиваются значения различных типов: первому элементу — строка, второму — дата, третьему — целое число. Поскольку Data объявлен как массив типа Variant, его элементам можно присваивать любые значения. В строке 6 значения всех элементов массива передаются в функцию MsgBox для отображения в диалоговом окне.

Расширим предыдущий пример и создадим двухмерный массив, содержащий имя, дату рождения и возраст 10 человек:

Sub 2D_МассивVariant()

Dim Data2(10, 3) As Variant

Data2(1,1) = " Иванов"

Data2(1,2) = #3/21/1947#

Data2(1,3) = Year(Date) - Year(Data(1,2))

MsgBox Data2(1,1) & ", возраст " & _

Data2(1,3) & ", родился " & Data2(1,2)

End Sub

Если считать массив Data2 таблицей, то этот код присваивает значения ее первой строке. Для задания остальных строк понадобятся дополнительные инструкции. Перепишем 2D_МассивVariant, используя преимущества нестандартного типа Персона, описанного ранее в этой главе. Для достижения такого же результата достаточно одномерного массива типа Персона, как показано ниже. Напомним, что определение типа должно стоять в начале модуля VBA.

Type Персона

Имя As String

ДатаРождения As Date

Возраст As Integer

End Type

Sub ПользовательскийМассив()

Dim Data3(10) As Персона

Data3(1).Имя = "Иванов"

Data3(1).ДатаРождения = #3/21/1947#

Data3(1).Возраст=Year(Date)- _

Year(Data3(1).ДатаРождения)

MsgBox Data3(1).Имя & ", возраст " & _

Data3(1).Возраст & ", родился " & _

Data3(1).ДатаРождения

End Sub

Выполнение программы ПользовательскийМассив заканчивается появлением такого информационного окна

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