- •266Лекция 13. Язык программирования Visual Basic for Application (vba)
- •Лекция 13. Язык программирования Visual Basic for Application (vba)
- •Типы данных
- •Инструкции vba
- •Имена vba
- •Процедуры vba
- •Подпрограмма Sub
- •Функция Function
- •Функции ввода-вывода данных и сообщений
- •Функция MsgBox
- •Функция InputBox
- •Управляющие конструкции vba
- •Проверка условия — If
- •Select Case
- •For Next
- •While…Wend
- •Do …Loop
- •Функции пользователя
- •Макросы Microsoft Office
- •Макросы Word
- •Макросы Excel
- •Макросы Access
- •Контрольные вопросы
266Лекция 13. Язык программирования Visual Basic for Application (vba)
Лекция 13. Язык программирования Visual Basic for Application (vba)
Изучение языка программирования VBA следует начинать со знакомства с основными элементами языка. Программные модули VBA состоят из процедур и функций, которые включают инструкции (команды) различного типа, объявления переменных, описания типов данных, значения констант, объекты VBA и т.п.
Типы данных
VBA обрабатывает данные различных типов, форматы данных приведены в табл. 1. Тип данных указывается при объявлении переменных, массивов, пользовательских типов данных. С помощью встроенных функций VBA выполняется преобразование типов данных.
Таблица 13.1
Тип |
Значение и длина типа данных |
Функция |
Boolean |
Логическое True (истина, -1), False (ложь, 0), 2 байта |
CBool |
Currency |
Числовое значений, денежный формат с фиксированным количеством знаков после десятичной запятой, 8 байтов |
CCur |
Date |
Дата/время, 8 байтов |
CDate |
Double |
Числовое значение, плавающая точка, двойная точность, 8 байтов |
CDbl
|
Integer |
Числовое значение, короткое целое, 2 байта |
CInt |
Long |
Числовое значение, длинное целое, 4 байта |
CLng
|
Single |
Числовое значение, плавающая точка, обычная точность, 4 байта |
CSng |
Decimal |
Числовое значение, до 28 значащих цифр, 14 байт |
CDec |
String |
Строковые значения, 1 символ занимает 1 байт |
CStr |
Byte |
Целое число от 0 до 255, отдельные символы, 1 байт |
CByte |
Variant |
Универсальный тип данных, 16 байтов плюс по 1 байту на каждый символ строковых данных |
CVar |
Object |
Ссылка на объекты, 4 байта |
|
Переменные — именованные области памяти для временного хранения значений выражений или свойств объектов. В VBA используется два режима объявления переменных:
необязательное объявление (по умолчанию все переменные имеют тип Variant);
обязательное объявление — в начале программного модуля размещается оператор Option Explicit и оператор Dim объявления переменных.
Для переменных различается область действия:
процедура — используются личные переменные, которые действительны только внутри процедуры:
Dim имя As тип
Private имя As тип
Для сохранения значения переменной при выходе из процедуры и ее повторного использования указывается
Static имя_переменной As тип
модуль — переменные используются всеми процедурами данного модуля:
Dim имя As тип
проект — общие переменные используются всеми процедурами любых модулей проекта:
Public имя As тип
Можно объявлять несколько переменных в одном предложении, указав для каждой переменной тип. Если тип данных не указан, считается, что он соответствует Variant. Например, для переменной Z по умолчанию тип Variant:
Dim X As Integer, Y As String, Z
Массив переменных содержит элементы, которые идентифицируются с помощью имени массива и индекса (порядкового номера элемента). Размерность массива может достигать 60. По умолчанию индексы массива начинаются с 0, верхние и нижние границы каждой размерности определяются целочисленными значениями1.
При объявлении массивов различной сферы действия используются ключевые слова Dim, Public, Private и Static. Тип элементов массива задается с помощью ключевого слова As:
Dim имя_массива (размер1, …, размер n) As тип
Пример 1
Определить двумерный массив (матрицу), 10 строк и 10 столбцов целых чисел.
Dim MyArray(9, 9) As Integer
В VBA можно использовать динамические массивы, верхняя граница размерности которых может многократно изменяться, например:
Dim Arr1() As Single
Для очередного изменения размерности массива выполняется инструкция:
ReDim Arr1(10)
Для расширения состава типов данных служит пользовательский тип данных, в одну структуру включаются разнородные элементы информации:
[Private|Public] Type имя_типа
имя_элемента1 [([индексы])] As тип
имя_элемента2 [([индексы])] As тип
…
End Type
Для присвоения значения элементам пользовательских типов данных используется выражение вида:
имя_типа.имя_элемента = <значение>
Присвоение переменной пользовательского типа данных выполняется с помощью инструкций:
Dim имя As имя_типа
или
Dim имя_массива (размер) As имя_типа
Пример 2
Создать пользовательский тип данных State, содержащий:
статический массив — Code, состоящий из 10 целых чисел;
строковую переменную — Cnty фиксированной длины в 30 символов.
На основе типа данных State определить массив ExState размерностью 50 элементов.
Фрагмент программного кода:
Type State
Code (1 To 10) As Integer
Cnty As String * 30
End Type
Dim ExState (1 To 50) As State