Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA For Excel Часть 01.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.16 Mб
Скачать

5.2.4 Функции определения размерности массива

Существуют две функции LBound – для определение нижней размерности ячеек массива, и, UBound – определение верхней размерности массива. Формат вызова данных функций следующий:

LВound(ИмяМассива [ , НомерСтруктуры])

Если параметр “НомерСтруктуры”, опущен, то соответствующая функция выдает размерность первой структуры в массиве.

Пример использования функций определения размерности массива:

Dim mas (1 to 50, -3 to 6)

A = LBound( mas , 1 )

B = UBound( mas , 1 )

C = LBound( mas , 2 )

D = UBound( mas , 2 )

Значение переменных A,B,C,D будет следующие:

A = 1

B = 50

C = -3

D = 6

Указанные функции могут быть использованы для определения размерности статического и динамического массива. Если массив объявлен функцией Array, то, указанным выше способом, размерность можно будет определить только одномерного массива, или только размерность первой структуры массива объявленного функцией Array. Однако, есть другой способ обращения к определенной структуре, который позволяет определить размерность многомерного массива объявленного функцией Array:

LBound( ИмяМассива(НомерСтроки) )

Пример:

V = Array ( Array(6, 8) , Array(10, 4, 7) )

A = LBound( V(0) )

B = UBound( V(0) )

C = LBound( V(1) )

D = UBound( V(1) )

Значение переменных A,B,C,D будет следующие:

A = 0

B = 1

C = 0

D = 2

5.2.5 Опрос, ввод и вывод в цикле ячеек массива

Ячейки одномерного массива опрашиваются следующим образом:

For Индекс = нач.ячейка то кон.ячейка

A(Индекс)

Next Индекс

где

Индекс – переменная, в которой перебираются индексы ячеек

нач.ячейка , кон.ячейка – соответственно, индекс начальной и конечной ячейки, т.е. диапазон перебираемых индексов.

Aимя массива , к ячейкам которого обращаются.

Пример:

For i = 2 то 5

A(i) = 1

Next i

В данном примере присваивается значение 1 ячейкам с индексами 2-5 массива A

Если неизвестна размерность одномерного массива можно применить цикл For each. Пример опроса ячеек одномерного массива циклом For each приведен нами в главе Входные параметры процедуры в таблице Виды входных параметров в параметре ParamArray.

Если массив многомерный, то применяют вложенный цикл:

For i =1 to 9

For j =1 to 9

A(i,j) = i *j

Next j

Next i

В данном примере переменная i является индексом строк, а переменная j – индексом столбцов двумерного массива*. В начале, заполняется первая строка массива, затем вторая и т.д. Т.е. массив опрашивается построчно. Ячейкам двумерного массива A присваивается произведения индекса строки на индекс столбца.

Оператор For each можно применять для опроса ячеек двумерных массивов, причем, без всяких вложений. В двумерных массивах опрос ячеек оператором For each без вложений производится по столбцам. Ячейки двумерного массива объявленного функцией Array нельзя опрашивать циклом For each без вложений, они опрашиваются следующим образом:

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

S = 0

For Each n In V

For Each n1 In n

S = S + n1

Next n1

Next n

В данном примере в переменную S заносится сумма всех значений ячеек массива V, т.е. после выполнения программ S =15. В данном примере массив опрашивается по строкам.

Приведем примеры ввода ячеек одномерного числового массива через диалог InputBox, и пример вывода двумерного массива в ячейки активного листа Excel:

‘Ввод значений ячеек в диапазоне 1-N

For i = 1 to N

A(i) = Val( InputBox(“Введите ячейку A” & i))

Next i

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

For I = 1 to n

For j = 1 to n1

Cells( i, j) = B( i, j )

Next j

Next i

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