VBA. Язык VBA. Массивы в VBA

Язык VBA

Язык VBA достаточно простой. Ниже приводится краткий курс языка VBA. Аббревиатура VBA означает Visual Basic for Applications, т.е. Visual Basic для приложений.

Объявление переменных в VBA

Пример объявления локальной переменной в VBA:

Dim intVar As Integer

здесь объявлена локальная, т.е. видимая в пределах функции, переменная типа Integer.

Пример объявления глобальной переменной в VBA:

Public intVar As Integer

такая перемнная доступна из своего и других модулей.

Пример объявления переменной, видимой только в своём модуле:

Private intVar As Integer

Пример объявления статической переменной в VBA:

Dim Static intVar As Integer

Статические переменные в VBA можно объявлять только на уровне процедуры. Значение статической переменной в этом примере равно нулю, т.е. при объявлении числовая переменная инициализируется нулем.

Особенность объявления переменных в VBA состоит в том, что переменную можно и не объявлять, но использовать. Тип таких переменных – Variant. Но рекомендуется объявлять переменные, указывать их тип, а не использовать тип Variant.

Константы в VBA

Константы в VBA объявляют с помощью Const:

Const intValue As Integer = 1234

Константам значение присваивается при их объявлении.

Массивы в VBA

Пример объявления массива в VBA:

Dim intArray(0 To 5) As Integer

объявлен массив типа Integer, индексы элементов изменяются от нуля до пяти.

Многомерные массивы в VBA

Пример двумерного массива в VBA:

Dim intArray(0 To 5, 0 To 2) As Integer

Динамические массивы в VBA

Динамические массивы могут изменять свой размер. Объявление динамического массива:

Dim intArray() As Integer

здесь размер массива не указан. Но перед использованием такого массива следует объявить его размер:

ReDim intArray(5)

Можно и изменить его размер после предыдущего определения:

ReDim intArray(15)

Процедуры в VBA

Пример объявления процедуры в VBA:

Public Sub aProcedure(ByVal intA As Integer, ByRef lngSqr As Long)
    lngSqr = intA * intA
End Sub

В этом примере объявлена процедура, видимая из всех модулей, на это указывает слово Public, принимающая два параметра: intA по значению, на это указывает ключевое слово ByVal, и параметр lngSqr по ссылке, на это указывает ключевое слово ByRef. Ключевое слово Sub говорит, что объявлена процедура.

По умолчанию аргументы передаются в процедуры по ссылке.

Функции в VBA

Функции отличаются от процедур тем, что возвращают значение. Пример функции в VBA:

Public Function lngFunc(ByVal intA As Integer) As Long
    lngFunc = intA * intA
End Sub

Для задания функции используем ключевое слово Function, после списка аргументов указываем тип возвращаемого значения. Строка

lngFunc = intA * intA

возвращает значение из данной функции, слева – имя функции, в данном случае оно играет роль return.

Первая программа на VBA

Откройте Excel, в строке меню окна Excel выберете Сервис — > Макрос — > Редактор Visual Basic. Откроется окно редактора, оно называется Microsoft Visual Basic. В окне Project – VBA Project кликаем дважды по Лист1. Вводим код:

Public Sub aMessage()
    MsgBox («It is my first VBA program.»)
End Sub

Далее Debug — > Compile VBA Project. Если нет ошибок, то запускаем нашу программу: Run — > Run Sub/UserForm.

Видим такую картину: VBA

Если у вас так получилось, то это значит, что самое трудное позади и очень скоро вы освоите VBA окончательно.

Использование функций в VBA

Сделаем программу с использованием функций. Напомню, что функция – это процедура, которая возвращает значение. Пусть наша программа возводит целое число в квадрат. Код на VBA:

Public Function lngSqr(ByVal intVal As Integer) As Long
     lngSqr = intVal * intVal
End Sub

Public Sub calculation()
     lngSqr = intVal * intVal
     Dim intVar As Integer
     Dim lngResult As Long
     intVar = 5
     lngResult = lngSqr(intVar)
     MsgBox («The result is » & lngResult)
End Sub

Получаем: VBA

Это результат работы.