Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_04_Массивы и циклы.doc
Скачиваний:
4
Добавлен:
15.08.2019
Размер:
82.43 Кб
Скачать

Программирование в Microsoft Excel Лабораторная работа №3 Стр. 7 из 7

Программирование в Microsoft Excel Лабораторная работа №4

4.1. Массивы

Массивом в языке программирования называется упорядоченная последовательность данных одного типа. Массив может быть одномерным или многомерным. Например, если мы имеем дело с рядом вещественных чисел или рядом строк, то это одномерный массив – для описания порядка расположения его элементов требуется только один ряд чисел. Таблица, состоящая из нескольких строк, будет уже двумерным массивом (так называемой матрицей) – для задания положения элемента в массиве потребуется два числа: номер столбца и номер строки. Вообще, в VBA массив может иметь до 60 размерностей. Массив объявляется с помощью оператора Dim до его первого использования в программе. При описании массива оператор Dim имеет следующий синтаксис:

Dim ИмяМассива ( Нижняя граница To Верхняя граница,…) As Тип,…

где ИмяМассива - идентификатор массива, удовлетворяющий правилам именования переменных;

Нижняя граница и Верхняя граница - нижняя и верхняя граница значений индексов (номеров) элемента массива соответствующей размерности. В качестве индексов элементов массива можно использовать только целые числа и выражения с целыми числами. Использовать переменные, элементы массивов и т. д. нельзя. Нижняя граница вместе с То можно не указывать. В этом случае нижней границей по умолчанию считается индекс 0, то есть в массиве А(3) – 4 элемента: А(0), А(1), А(2), А(3). Оператор

Option Base Индекс

для всего модуля устанавливает число (Индекс), которое будет по умолчанию считаться первым индексом массива. Он размещается на самой верхней строке модуля вне всех программ. Например, если указать в модуле

Option Base 1

То массив А будет содержать 3 элемента: А(1), А(2), А(3).

Тип - любой встроенный или определённый пользователем тип данных.

Например, для использования в программе ряда из 7 чисел

0,98 6,78 45,6 3,46 -100 34 - 45,7

необходимо предварительно объявить одномерный массив из 7 элементов:

Dim V(1 To 7) As Single

а для использования матрицы

двумерный массив размером 3*3:

Dim A (1 To 3, 1 To 3) As Single

Обращение к элементу массива производится при помощи имени массива, после которого в скобках через запятую перечисляются индексы всех размерностей массива. Например, присвоим значения элементам матрицы А:

А(1,1) = 0,98

A(1,2) = -1,23

A(1,3) = 34

и т. д.

Сложим элементы А(1,1) и А(3,3):

S = А(1,1)+А(3,3)

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

Следующий пример объявляет одномерный массив D из 4 элементов и выводит на экран сумму его элементов. Затем с клавиатуры вводится номер элемента, который нужно вывести на экран:

Sub Arrays()

Dim D(1 To 4) As Single

Dim F As Single

Dim i As Integer

D(1) = 0.97: D(2) = 45.6: D(3) = 34.6: D(4) = 230.2

F = D(1) + D(2) + D(3) + D(4)

MsgBox "Сумма элементов массива D : " & CStr(F)

i = InputBox("Введите i от 1 до 4: ")

MsgBox "D(" & CStr(i) & ") = " & CStr(D(i) )

End Sub

Выполните задание 1.

Иногда в процессе выполнения программы необходимо изменять размер массива. В этом случае массив изначально объявляют как динамический. Для этого при объявлении массива в скобках не надо указывать его размерность:

Dim ИмяМассива() As Тип

Изменять при этом можно как число элементов, так и число размерностей, но не тип.

Размера массива изменяется при помощи оператора ReDim:

ReDim ИмяМассива() As Тип

При этом, в отличие от оператора Dim, можно применять имена целочисленных переменных, элементов массивов и т. д., а не только целые числа. Если же при изменении размера массива нужно сохранять предыдущие значения, то необходимо в описании массива использовать ключевое слово Preserve:

ReDim Preserve ИмяМассива() As Тип