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

1)Ввод с помощью функции Input Box (ввод вручную)

a (i,j ) = Input box (“a(“ & i & “,” & j & “)=”)

2)Ввод с помощью генератора случайных чисел

a (I, j) = RND.

Вывод двумерного массива в окно отладки.

Фрагмент программы описывает более подробно блоки №1 -№5

For i=1 to n

For j=1 to m

Debug.Print a(I,j), ' запятая для того, чтобы не переходить на новую строку

Next j

Debug.Print

‘пустой оператор Debug.Print даёт возможность перейти на новую строку

‘ после вывода очередной строки массива

Next i

Особенности ввода-вывода двумерных массивов на рабочий лист при работе с vba (excel)

Конечно, можно воспользоваться нашей блок-схемой и стандартными циклами. Но это можно сделать, используя возможности VBA (EXCEL), гораздо проще.

Ввод массива

Предположим, что двумерный массив необходимо ввести, зная, что данный массив находится в некотором диапазоне рабочего листа, например. B3:C8.

Для того чтобы двумерный массив ввести, используя некоторые диапазоны рабочего листа,

достаточно:

1)объявить переменную (имя массива) как переменную типа Variant,

например, Dim a или Dim a as variant

2) указать с какого диапазона считывается массив, т. е. записать строку кода вида:

а = Range (“B3:C8”).value

или

а = (cells(3,2),cells(8,3)).value

Вывод массива на рабочий лист.

Достаточно указать в какой диапазон будет выведен массив (левая часть равенства) и имя массива (правая часть равенства), например:

Range(“B3:С8”).Value=а

или

Worksheets(“лист3”).Range( cells(3,2)),cells(8,3)).Value=а

Замечание.

Вывод одномерного массива на рабочий лист можно также осуществить, используя строки кода вида:

Range(“B3:F3”).Value=а

или

Worksheets(“лист3”).Range( cells(3,2)),cells(3,6)).Value=а

При этом надо иметь в виду, что

  1. Вывод должен идти обязательно в горизонтальный диапазон.

  2. Ввести одномерный массив с рабочего листа нельзя.

Обращение к массивам при работе с подпрограммами.

Для обработки массива в подпрограмме необходимо использовать следующие правила:

  1. Объявите массив в головной программе

  2. Массив передаётся в подпрограмму через список фактических параметров, в котором необходимо указать только имя массива(без скобок!)

  3. Массив объявляется только один раз в головной программе! Объявив массив второй раз, в подпрограмме мы будем иметь дело с локальным массивом данной подпрограммы, а не с интересующим нас массивом.

  4. Размер массива может быть определен как в головной, так и вызываемой подпрограмме.

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

Еще раз обращаем внимание, что объявление массивов должно идти либо в вызываемой, либо в головной программе( в зависимости от стоящих перед вами задач), но не в обеих программах! (задумайтесь, что произойдёт, если сделать оба объявления).

Пример.

Рассмотрим подпрограмму ввода двумерного массива с помощью подпрограммы VVOD (a, l, m, k),

где

а – имя массива,

l – число строк

m – число столбцов,

к – число, указывающее, в каком диапазоне [1; k] находятся значения целочисленного массива.

SUB VVOD (a, l, m, k),

FOR і = 1 то l

FOR j=1 то m

a (i,j) = int (Rnd * k) +1

Next j

Next i

END sub.

Используем данную подпрограмму при решении следующей задачи: каждый элемент двумерного массива увеличить на число, равное сумме индексов соответствующего элемента.

Sub change()

Dim b() as integer, n as integer, m as integer

n= Inputbox(“ ввести число строк, n=”)

m= Inputbox(“ ввести число столбцов, m=”)

Redim b(1 to n, 1 to m)

k= Inputbox(“в каком диапазоне [1,k] должен быть масссив, k=”)

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