iWhatIs(0) = 1
iWhatIs(1) = 2
iWhatIs(2) = 3
ReDim Preserve iWhatIs(3)
iWhatIs(3) = 4
Номер первого элемента по умолчанию начинается с 0, для того чтобы изменить нумерацию используйте инструкцию Option Base или используйте явное указание номера первого элемента. Инструкцию Option Base необходимо расположить в самом начале модуля VBA.
Номер первого элемента всех массивов начинается с 1:
Option Base 1
Dim iString(3) As String
Dim iData(5, 2) As Double
Объявление фиксированных массивов с явным описанием нижней границы:
Dim iString(1 To 3) As String
Dim iData(1 To 5, 1 To 2) As Double
Макрофункции для работы с массивом:
Array - функция позволяет создавать массив в ходе выполнения программы, без предварительного описания.
iArray = Array("ivan", "john", "maurizio")
Erase - функция используется для удаления данных, хранимых в элементах массива. Массив фиксированного размера очищается полностью, но память, отведённая под его хранение, остаётся за ним. Динамический же массив уничтожается полностью.
Erase iString
Erase iData
Erase iWhatIs
IsArray - функция проверяет, является ли переменная массивом. IsArray имеет всего один аргумент (переменную) и в зависимости от результатов проверки возвращает True - если переменная является массивом, или False - если нет.
Пример проверки динамического массива:
Dim iArray()
ReDim Preserve iArray(1 To 3)
iArray(1) = "ivan"
iArray(2) = "john"
iArray(3) = "maurizio"
ReDim Preserve iArray(1 To 4)
iArray(4) = "it's very good man's"
If IsArray(iArray) = True Then
MsgBox "iArray - это массив",, ""
Else
MsgBox "iArray - это не массив",, ""
End If
Пример проверки массива, созданного с помощью функции Array:
iArray = Array("ivan", "john", "maurizio")
If IsArray(iArray) = True Then
MsgBox "iArray - это массив",, ""
Else
MsgBox "iArray - это не массив",, ""
End If
LBound - функция определит нижнюю границу массива.
UBound - функция определит верхнюю границу массива.
Dim iData(5 To 15, 1 To 100) As Double
iLBound = LBound(iData)
iUBound = UBound(iData)
MsgBox "Нижняя граница массива: " & iLBound & Chr(10) _
& "Верхняя граница массива: " & iUBound,, ""
Применение функций LBound, UBound к обычной переменной или динамическому массиву, который ещё не был описан инструкцией ReDim, вызовет ошибку. Не забывайте проверять переменную, используя функцию IsArray.