Ввод-вывод двумерных массивов.

Предыдущая6789101112131415161718192021Следующая

Каждый элемент двумерного массива (матрицы) характеризуют 2 индек­са, первый из которых обозначает номер строки, а второй - номер столбца, на пересечении которых располагается данный элемент. Поэтому, в отличие от одномерных массивов, для ввода-вывода матриц нужно использовать двойные вложенные циклы, в одном из которых пара­метром является номер строки, а во втором - номер столбца. В остальном же, правила организации ввода-вывода двумерных массивов не отличаются от уже описанных правил ввода-вывода для одномерных массивов.

В общем случае для VBA во всех приложений Microsoft Office и приложениях других сторонних разработчиков со встроенным VBA организовать ввод двумерных массивов можно как показано в следующем примере.

Пример. Организовать ввод в диалоговом режиме целочислен­ной матрицы .

Внешний цикл организовывается по строкам матрицы, внутренний - по столбцам.

Sub DvumMassv()

Dim Y() As Integer

ReDim Y(1 To 5, 1 To 4) As Integer

Dim i As Integer, j As Integer

For i = 1 To 5 ' Цикл по строкам

For j = 1 To 4 'Цикл по столбцам

'Ввод элемента матрицы

Y(i, j) = Val(InputBox("Введите Y(" & i _

& "," & j & ")", "Ввод матрицы Y"))

'Печать элемента матрицы

Next j

'Перейти на следующую строку

Next i

End Sub

Для приложений Word и Excel данные можно считывать из таблиц.

Пример. Создать двумерный массив, в качестве элементов которого, данные берутся из таблицы документа Word.

Допустим, в документе Word имеется таблица со значениями:

В редакторе VBA вставим модуль, внутри которого поместим процедуру:

Sub Massiv6()

Dim Massiv() As Single 'объявляем массив

Dim tblOne As Table 'объявляем таблицу tblOne

Dim celTable As Cell 'объявляем ячейку

Dim rngTable As Range 'объявляем диапазон

Dim n As Integer 'Объявляем кол-во строк

Dim m As Integer 'Объявляем кол-во столбцов

'создаем новую таблицу и устанавливаем на нее ссылку

Set tblOne = ActiveDocument.Tables(1)

'присваиваем переменной n общее количество строк

n = tblOne.Rows.Count

'присваиваем переменной m общее количество столбцов

m = tblOne.Columns.Count

'переопределяем массив

ReDim Massiv(1 To n, 1 To m)

'открываем цикл для считывания данных из таблицы tblOne

For x = 1 To n 'строка

Y = 1 'столбец

'для каждой ячейки в коллекции ячеек, которая

'находится в строке x, в таблице tblOne

For Each celTable In tblOne.Rows(x).Cells



'устанавливаем диапазон ячейки

Set rngTable = celTable.Range

'уменьшаем диапазон ячейки на один символ

rngTable.MoveEnd Unit:=wdCharacter, Count:=-1

'текст ячейки присваиваем массиву

Massiv(x, Y) = rngTable.Text

Y = Y + 1

Next celTable

Next x

End Sub


8234546179210158.html
8234594763283274.html
    PR.RU™