Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для заочников_VBA.doc
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
2.45 Mб
Скачать
    • 4.22. Обработка массивов

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

Объявление одномерного массива в VBA имеет следующий синтаксис:

Dim имя (размерность) AS тип

имя - любое имя для массива, удовлетворяющее правилам VBA для имен переменных.

Размерность массива записывают так:

(нач.знач. To кон.знач) или (кон. значене)

нач.знач. и кон.знач - границы допустимых индексов массива.

нач.знач. - определяет нижний предел допустимых индексов.

кон.знач. - верхний предел.

Параметр кон.знач. является обязательным, часть нач.знач. To может отсутствовать. В этом случае элементы массива нумеруются с нуля.

Определение нач.знач. делает программный код более понятным, а также позволяет выявлять ошибки программирования. Кроме того, это дает возможность определения иного начального индекса, отличного от 0.

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

Тип - любой допустимый тип VBA. Если Тип не указан, то все элементы массива имеют тип Variant.

Dim A (1 To 10) As Integer, B (0 To 9) As Single, C (9)

Const N=20

Dim M(1 to N)

Для доступа к элементу массива необходимо указать имя массива, а затем в круглых скобках, значение индекса. Синтаксис обращения к элементу массива имеет следующий вид: имя (индекс). Например, A(1), В(0), C(8)

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

Например,

Dim K As Integer

K=2, C(K)=A(K+1)+B(2*K)

Все манипуляции с массивами в осуществляются поэлементно. Организовывается цикл, в котором происходит последовательное обращение к 1-му, 2-му и т.д. элементам. При работе с массивами удобно хранить данные в ячейках рабочих листов Excel, а ввод и вывод элементов массива осуществлять при помощи свойства Cells.

      • 4.22.1. Ввод-вывод элементов массива

        Алгоритм ввода массива:

        Рис. 34.

        Фрагмент программы:

        Sub inp()

        Dim i As Integer,

        Dim n As Integer

        Dim X(1 To 10) As Single

        n = InputBox("n=", ,10)

        For i = 1 To n

        X(i) = Cells(i, 1)

        Next

        End Sub

        Алгоритм вывода массива

        Рис. 35.

        Фрагмент программы.

        For i = 1 To n

        Cells(i, 2) = X(i)

        Next

      • 4.22.2. Основные алгоритмы обработки массивов

Сумма элементов массива.

.

Рис. 36

Произведение элементов массива.

Рис. 37.

S = 0

For i = 1 To n

S = S + X(i)

Next

MsgBox "S=" & S

P = 1

For i = 1 To n

P = P * X(i)

Next

MsgBox "P=" & P

Поиск максимального элемента и его номера.

Рис. 38.

Max = X(1)

Nom = 1

For i = 2 To n

If X(i) > Max Then

Max = X(i)

Nom = i

End If

Next

MsgBox "Max=" & Max

& Chr(13) & "Nom=" & Nom

Удаление m-го элемента из массива.

Рис. 39

m = InputBox("n=")

For i = m To n - 1

X(i) = X(i + 1)

Next

For i = 1 To n - 1

Cells(i, 2) = X(i)

Next

Упорядочение элементов массива. Сортировка методом пузырька (рис. 40).

Sub sort()

Dim i As Integer, j As Integer, n As Integer

Dim Y(1 To 10) As Single

n = InputBox("n=", , 10)

For i = 1 To n

Y(i) = Cells(i, 1)

Next

For j = 1 To n - 1

For i = 1 To n - j

If Y(i) > Y(i + 1) Then

b = Y(i + 1)

Y(i + 1) = Y(i)

Y(i) = b

End If

Next i

Next j

For i = 1 To n

Cells(i, 2) = Y(i)

Next

Рис. 40.