Основы офисного программирования и язык VBA


Массивы


Простейший и самый распространенный структурный тип - массив - упорядоченная совокупность данных одного типа. Порядок на элементах массива задается индексами его элементов. В VBA массивы могут быть одномерными и многомерными. Удивительно, сколь высока допустимая размерность массива, - число измерений доходит до 60. За всю свою многолетнюю практику не припомню случая использования более чем трехмерных массивов.

Конечно, все, что было сказано о глобальных и локальных переменных, общих и закрытых, двух уровней объявления, - относится и к массивам. Появляется только единственное дополнение, связанное с необходимостью указать размерность массива и границы изменения индексов. Поэтому синтаксис объявления массивов несколько расширен, - после имени переменной в круглых скобках указывается список размерностей массива:

{Dim | Private | Public | Static }<имя переменной> (<список размерностей>) [ As <имя типа>]

Синтаксически каждое измерение в списке отделяется запятой и определяется заданием нижней и верхней границы изменения индексов. По историческим причинам в Бейсике нижняя граница была фиксирована и равна 0. Затем ввели специальную опцию OptionBase, позволяющую устанавливать эту границу равную 1 или 0. Подумав еще, разрешили задавать нижнюю и верхнюю границу, причем и та и другая могут быть выражениями при одном ограничении - это должны быть константные выражения, не содержащие переменных. Вот "классическое" объявление одномерного массива и работа с ним:

Public Sub MyArray() Const LowBound As Integer = -5, HighBound As Integer = 5 Dim MyArr(LowBound To HighBound) As Byte Dim I As Integer Debug.Print "Элементы массива MyArr:" For I = LowBound To HighBound MyArr(I) = I + 6 Debug.Print MyArr(I) Next I End Sub

При печати элементов этого массива будут напечатаны числа от 1 до 11 по числу его элементов.

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




Начало  Назад  Вперед