Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УЧЕБНОЕ ПОСОБИЕ VBA.doc
Скачиваний:
25
Добавлен:
27.10.2018
Размер:
8.97 Mб
Скачать

2.12.3 Действия над массивами

Для работы с массивом как единым целым используется идентификатор массива без указания индекса в круглых скобках. Массив может участвовать в операторе присваивания. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, то есть иметь одинаковые типы индексов и одинаковые типы компонентов.

Пример 1.

Если массивы А и В описаны как

Dim A (1 To 2) As Byte, B (1 To 2) As Byte,

то применение к ним допустимой операции даст следующий результат:

Выражение

Результат

A = B

Все значения элементов массива В присваиваются соответствующим элементам массива А. Значения элементов массива В остаются неизменны

Пример 2.

Значение одного массива присваивается другому поэлементно в операторе цикла.

Sub primer ()

Dim A (1 To 2) As Byte, B (1 To 2) As Byte

Dim I As Byte

B(1) = 2

B(2) = 4

For I = 1 To 2

A(i) = B(i)

Debug.Print A(i), B(i)

Next i

End Sub

2.12.4 Действия над элементами массива

После объявления массива каждый его элемент можно обрабатывать, указав идентификатор (имя) массива и индекс элемента в круглых скобках.

Пример 1.

Запись

Mas (2), VectorZ (10)

позволяет обратиться к третьему элементу массива Mas и одиннадцатому элементу массива VectorZ.

Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах параметрических и итерационных циклов, входить в качестве параметров в операторы ввода и вывода; им можно присваивать любые значения, соответствующие их типу.

2.12.5 Формирование массива

1 способ.

Формирование массива в программе определяется поэлементно с помощью последовательности операторов.

Пример 1.

Dim B (1 To 2, 1 To 3) As Single

B (1,1) = 2 : B (1,2) = 4 : B (1,3) = 6

B (2,1) = 1 : B (2,2) = 6 : B (2,3) = 2

2 способ.

Формирование массива с помощью датчика случайных чисел.

Пример 2.

Sub primer ()

Dim A(1 To 12) As Variant

Randomize

For i = 1 To 10

A(i) = Rnd (40)

Debug.Print A(i)

Next i

End Sub

3 способ

Инициализация элементов массива оператором цикла.

Наиболее эффективно эта операция выполняется с помощью оператора For.

Пример 3.

Dim M (1 To 9, 1 To 9) As Integer

Dim i As Integer

Dim j As Integer

For i = 1 To 9

For j = 1 To 9

M(i, j) = i * j

Next j

Next i

4 способ

Использование функции Array (массив) для задания одномерного массива

Удобным способом определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа Variant.

Пример 4.

Sub ShowArray ()

Dim A As Variant

A = Array (10, 20, 30)

Debug.Print A(0) ‘Отобразится: 10

Debug.Print A(2) ‘Отобразится: 30

End Sub

Использование функции Array (массив) для задания многомерного массива

Функция Array позволяет задавать не только одномерные, но и многомерные массивы. Это обеспечивается использованием вложенной конструкции с функциями Array.

Пример 5.

Option Base 1

Sub MultiDim ()

Dim A As Variant

A = Array (Array(“Санкт-Петербург“, “Россия“), Array (“Киев“, “Украина“))

Debug.Print A (1) (1) ‘Отобразится: Санкт-Петербург

Debug.Print A (1) (2) ‘Отобразится: Россия

End Sub

Функция Array позволяет задавать не просто многомерные массивы, а массивы, у которых строки имеют различное число компонентов.

Пример 6.

Private Sub VarArray ()

Dim M As Variant

M = Array(Array(1,2), Array (3,4,5))

Debug.Print M (0) (0), M (1) (2) ‘Отобразится: 1 5

End Sub