Тема 2.5 Синтаксис VBA
Алфавит VBA
Алфавит языка программирования - это полный набор допустимых символов, принятых в конкретном языке для обозначения данных и действий над ними.
Алфавит языка VBA включает следующий набор символов:
- прописные (A - Z) и строчные (а - z) буквы латинского алфавита;
- цифры от 0 до 9;
- машинописные символы и знаки пунктуации: !, @, #, $, %, &;
- знаки арифметических операций (в порядке возрастания приоритета): +, -, *, /, |, ^;
- знаки операций отношения: =, <, >;
- знаки препинания и разделители: <пробел>, <перевод строки>, _ . : ; ( );
- ' - апостроф в качестве символа комментария.
В алфавит языка входят также зарезервированные слова, которые не могут быть использованы в качестве идентификаторов. Примеры зарезервированных слов: Dim, Sub, Function, If и т.д.
Типы данных
Тип данных определяет диапазон возможных значений переменной, количество памяти для ее размещения и набор допустимых операций. Базовые типы данных VBA приведены в таб. 5.
Таблица 5. Типы данных VBA
Тип данных | Описание и диапазон значений |
Array | Массив переменных любого встроенного типа данных |
Boolean | True (истина) или False (ложь) |
Byte | Положительное число от 0 до 255 |
Currency | Используется для денежных вычислений с фиксированным количеством десятичных знаков. От -922 337 203 685 477,5808 до 922 337 203 685 477,5807 |
Date | Дата и время. Диапазон дат: от 01.01.0100 г. до 31.12.9999 г. Диапазон времени: от 00:00:00 до 23:59:59 |
Decimal | Десятичное представление данных в целочисленной или вещественной форме |
Double | Число с плавающей точкой двойной точности. Отрицательные числа: от -1,79769313486232Е+308 до -4,94065645841247Е-324. Положительные числа: 4,94065645841247Е-324 до 1,79769313486232Е+308 |
Integer | Целое число от -32 768 до 32 767 |
Long | Длинное целое число от -2 147 483 648 до 2 147 483 647 |
Object | Ссылка на объект |
Single | Число с плавающей точкой обычной точности. Отрицательные числа от -3,402823Е+38 до 1,401298Е-45. Положительные числа от 1,401298Е-45 до 3,402823Е+38 |
String (переменной длины) | Длина строки от 0 до, приблизительно, 2 миллиардов символов |
String (фиксированной длины) | от 0 до ~65 000 символов |
Variant | Может использоваться для хранения любого типа данных, кроме строк фиксированной длины. Диапазон зависит от фактически сохраняемых данных. |
Определяемый пользователем тип данных | Используется для описания сложных данных на основе базовых типов (см. структурные типы ) |
Идентификаторы
В качестве идентификатора в VBA можно использовать произвольную последовательность букв и цифр длиной до 255 символов, которая обязательно должна начинаться с буквы. Эта последовательность может включать также символы подчеркивания и цифр. В качестве идентификаторов нельзя использовать зарезервированные слова языка и имена библиотечных объектов. Пробелы в идентификаторах недопустимы.
Примеры идентификаторов: SalesHistory, Counter, i, BirthDay и т.п.
Объявления
Переменные
VBA поддерживает 2 способа объявления переменных:
- Неявный - VBA создает переменную и резервирует память для ее хранения, когда эта переменная в первый раз появляется в каком-либо операторе VBA (обычно в операторе присваивания).
- Явный - имя и тип переменной определяются до первого обращения.
Явное объявление переменных предпочтительнее, так как:
- ускоряет выполнение кода;
- уменьшается количество ошибок;
- код становится более понятным.
Для явного объявления переменных используется оператор Dim со следующим синтаксисом:
Dim <имяПеременной> [As <типДанных>]
- Здесь:
- имяПеременной - любой допустимый идентификатор;
- типДанных - любой поддерживаемый VBA тип данных.
Для принудительного включения явного и обязательного объявления переменных используется оператор Option Explicit.Он должен быть расположен в самом начале модуля (раздел Declarations). При неявном объявлении переменной можно задавать ее тип, добавляя в конец имени специальные символы определения типа (type definition character). Эта возможность сохранена для совместимости с устаревшими версиями языка Basic.
Константы
VBA поддерживает неименованные и именованные константы. Неименованные константы — это фактические значения данных определенного типа. Их можно использовать без какого-либо объявления, непосредственно в выражениях.
Именованные константы — это мнемонические обозначения неименованных констант. Для использования в программе именованные константы должны быть предварительно объявлены с ключевым словом Const.
Синтакис объявления именованных констант:
Const <имяКонстанты> [As <типДанных>] = <значение1>
- Где:
- имяКонстанты – имя константы;
-
значение – значение константы.
Пример:
Const intPersonCount As Integer = 100 Const maxLen% = 50
Библиотеки типов VBA представляют множество встроенных констант. Такие константы используются обычно при работе с объектами приложения. Эти константы не требуют предварительного описания. Имена встроенных констант начинаются с префикса, который указывает, к объекту какого приложения Microsoft Office они относятся: xl(Excel), wd(Word), ac(Access), pp(Power Point), ol(Outlook), vb(VBA).
Операции
В программах на VBA можно использовать весь типовой для универсального языка программирования набор операций:
- математические (или арифметические) – выполняются над числами и их результатом являются числа;
- отношения – применяются не только к числам и их результатом являются логические значения;
- логические – используются в логических выражениях и их результатом являются логические значения.
Таблица 6. Математические операции
Операция | Формат | Название |
+ | [Операнд1] + [Операнд2] | Сложение |
- | [Операнд1] - [Операнд2] | Вычитание |
- | - [Операнд1] | Перемена знака (или унарный минус) |
* | [Операнд1] * [Операнд2] | Умножение |
/ | [Операнд1] / [Операнд2] | Деление |
\ | [Операнд1] \ [Операнд2] | Целочисленное деление |
Mod | [Операнд1] Mod [Операнд2] | Остаток от деления |
^ | [Операнд1] ^ [Операнд2] | Возведение в степень |
Таблица 7. Операции отношения
Операция | Формат | Название |
< | [Операнд1] < [Операнд2] | Меньше |
> | [Операнд1] > [Операнд2] | Больше |
<= | [Операнд1] <= [Операнд2] | Меньше или равно |
>= | [Операнд1] >= [Операнд2] | Больше или равно |
<> | [Операнд1] <> [Операнд2] | Не равно |
= | [Операнд1] = [Операнд2] | Равно |
Is | [Операнд1] Is [Операнд2] | Сравнение двух операндов, содержащих ссылки на объекты |
Like | [Операнд1] Like [Операнд2] | Сравнение двух строковых выражений |
Таблица 8. Логические операции
Операция | Формат | Название |
And | [Операнд1] And [Операнд2] | Логическое умножение (И) |
Or | [Операнд1] Or [Операнд2] | Логическое сложение (ИЛИ) |
Xor | [Операнд1] Xor [Операнд2] | Исключающее Or (Исключающее «ИЛИ») |
Not | Not [Операнд1] | Логическое отрицание (НЕ) |
Imp | [Операнд1] Imp [Операнд2] | Логическая импликация |
Eqv | [Операнд1] Eqv [Операнд2] | Логическая эквивалентность |
Таблица 9. Операции над строками
Операция | Формат | Название |
& | [Строка1] & [Строка2] | Конкатенация (сцепление строк). Для сцепления строк допустимо использование операции вида [Строка1] + [Строка2] |
Оператор присваивания
Оператор присваивания предназначен для задания ("присваивания") значения переменным, инициализации констант или изменения свойств объекта. Формат оператора присваивания:
[Let] <имяЭлемента> = <выражение>
- где:
- Let - необязательная инструкция, которая сохранена для совместимости;
- <имяЭлемента> – это идентификатор переменной, константы (при объявлении) или свойства объекта;
-
<выражение> состоит из переменных, констант, операций и функций.
Примеры использования оператора присваивания:
Place="d:\windows\system" File="GameTree.Exe" Student_Card(100).Group=33
Для присваивания переменной ссылки на объект применяется инструкция Set:
Set <объектная Переменная> = [New] <объектноеВыражение> | Nothing
- где:
- New – опция (ключевое слово), которая используется при создании нового экземпляра класса;
-
Nothing – опция (ключевое слово), которая позволяет освободить все системные ресурсы и ресурсы памяти, выделенные для объекта.
- В следующем примере инструкция Set присваивает переменной MyRange ссылку на диапазон ячеек А1:В1.
Set MyRange = Range("A1:B1")
Приоритеты операций
Порядок выполнения операций определяется расстановкой круглых скобок и приоритетом (старшинством) операций. Это обеспечивает однозначность в трактовании значений выражений. В таб. 10 приведены приоритеты выполнения операций.
Таблица 10. Приоритеты операции VBA
Приоритет | Операция |
1 | Вызов функции и скобки |
2 | ^ |
3 | - (смена знака) |
4 | *, / |
5 | \ |
6 | Mod |
7 | +, - |
8 | >, <, >=, <=, <>, = |
9 | Not |
10 | And |
11 | Or |
12 | Xor |
13 | Eqv |
14 | Imp |
Для иллюстрации вышесказанного приведем пример программы, вычисляющей диаметр, периметр и площадь круга, заданного радиусом (листинг 2).
Листинг 2. Переменные, константы, операции
Private R As Single 'радиус Public D As Single, S As Single, P As Single 'диаметр, периметр, площадь Const PI = 3.14 'Константа PI (имеется встроенная функция VBA) Sub sample2() Dim res As String R = 20 D = 2 * R 'вычисляем диаметр S = PI * R ^ 2 'вычисляем площадь P = D * PI 'вычисляем периметр 'формируем строку сообщения res = "Для окружности с радиусом " & CStr(R) & " диаметр равен " & CStr(D) & _ ", периметр - " & CStr(P) & ", площадь - " & CStr(S) Debug.Print res ' вывод результата в окно отладчика End Sub
CC-BY-CA Анатольев А.Г., 31.01.2012