Основные понятия языка VBA
Объект – это объединение данных с кодом, предназначенным для их обработки.
Объект представляет собой поименованный элемент, который имеет:
- свойства (характеристики), которые можно проверить или изменить;
- методы (действия), которые можно выполнить над объектом;
- события (возможные для объекта ситуации), на которые он может ответить заранее определенными действиями.
Оператор – это наименьшая способная выполняться единица VBA-кода. Оператор может объявлять или определять переменную, а также выполнять какое-либо действие в программе. Иначе говоря, оператор представляет собой обобщенную инструкцию, содержащую всю информацию, нужную для выполнения определенных действий. Операторы в общем случае состоят из ключевых слов, выражений и операндов.
Ключевые (зарезервированные) слова – это имена команд, операторов, процедур, функций.
Операнды – это данные, которые используются в программе. К ним относят константы, переменные и значения функций.
Процедура – это наименьшая единица программного кода, на которую можно ссылаться по имени и которая может выполняться независимо.
В VBA основные типы процедур – это Sub и Function. Любая процедура содержит один или более операторов, которые, в свою очередь, помещены между двумя специальными операторами: объявлением процедуры в начале и оператором завершения процедуры в конце.
Модуль – это поименованная единица, которая состоит из одной или нескольких процедур, а также общих объявлений, относящихся ко всем процедурам в модуле.
Алфавит VBA включает в себя:
- прописные и строчные латинские буквы от A до Z, а также буквы русского алфавита от А до Я;
- арабские цифры от 0 до 9;
- знаки пунктуации (пробел, точку, запятую, точку с запятой, двоеточие, круглые скобки, кавычки, апостроф);
- специальные символы ?, !, #, %, $
Данные
Данные – это элементарные конструкции языка.
Типы данных делятся на простые (или скалярные) и сложные (или структурированные). Простые типы данных подразделяются на числовые, строковые и логические. Структурированный тип данных массив – $n$-мерная совокупность индексированных переменных одного типа. Массиву присваивается имя. Массив состоит из элементов (переменных), которые в памяти размещаются последовательно. Обращение в программе ко всему массиву производится по его имени. Для обращения к конкретному элементу массива необходимо указать его имя и в круглых скобках – индекс (номер) массива. Все элементы массива имеют одно имя, но различные номера (положения) в массиве.
В VBA используются 11 стандартных типов данных и пользовательский тип данных, их характеристики приведены в таблице ниже.
Различные типы данных введены для рационального использования памяти ЭВМ. Наиболее часто начинающие программисты используют типы данных Integer (для целых чисел) и Single (для дробных чисел).
Символьные (строковые, текстовые) данные должны заключаться в кавычки: ″1-я пара″, ″лекция″.
Переменные
Основное назначение VBA это обработка данных. Некоторые данные могут храниться в объектах, например, диапазонах рабочих листов, а некоторые сохраняются в переменных.
Переменная - это некоторое выделенное пространство в памяти компьютера, которое может содержать данные разных типов – числовые, текстовые, логические и т.д., а так же результаты вычислений.
Значение переменной присваивается с помощью знака равенства. Для удобства работы с переменными в языках программирования предусмотрена возможность задания понятных человеку имен, к примеру, имена переменных rFIO, rBirthday. К именам переменных в VBA имеется ряд требований:
- Переменная может содержать латинские символы, числа. Использование пробела и точки в имени переменной недопустимо (вместо пробела программисты используют знак "_").
- Имя переменной должно начинаться с текстового символа (числа в начале не допустимы).
- Не допускается использование следующих символов: #, %, &, !, значок доллара. Эти символы в VBA зарезервированы за кратким указанием типа переменной без ее описания. К примеру, содержание символа $ (MyTxt$) в конце имени переменной указывает, что значение, которое хранится в этой переменной, относится к текстовому типу.
- Недопустимо использование зарезервированных слов. Если все ж для понимания назначения переменной необходимо использование в имени зарезервированного слова, то можно добавить некоторый символ или символы, например: Date зарезервировано (тип дата), для использования можно добавить "My", после чего получим допустимое – MyDate.
- Имя переменной не должно быть длиннее 254 символов. Мало вероятно, что кому-то придет в голову для переменной задавать имя длиннее 15-20 символов, не говоря уже о 254.
- Язык VB не чувствителен к регистру, поэтому переменные MyVar и myvar для VBA одинаковы.
Пара советов по именованию переменных. Давайте имена переменным понятные, но в тоже время короткие т.к. с длинными именами сложнее работать. VBA позволяет описывать переменные в любой области кода, что в дальнейшем, при большом количестве строк программного кода может вызвать затруднение с поиском и определением типа. Рекомендуется не лениться описывать все переменные в начале процедуры или функции, определив, таким образом, некоторый блок переменных. Можно также оставить комментарии с подробным описанием назначения переменной.
Описание переменных в VBA
Под описанием переменной подразумевается указание типа данных. В VBA переменные можно указывать явным и неявным образом. Не явным образом означает, что можно в любом месте кода указать имя переменной и начать с ней работать, в таком случае тип этой переменной принимается как Variant. Такой способ удобен, но не рекомендуется, поскольку может возникнуть путаница и, как следствие, ошибки при вычислениях. Явное описание осуществляется после ключевого слова:
Dim [имя переменной] As [Тип].
Например, Dim MyInt As Integer. В случае такого описания переменная MyInt будет хранить в памяти только значения целого типа.
Обязательное объявление всех переменных
Как уже говорилось выше переменные в VBA можно объявить, а можно и не объявлять. Однако рекомендуется объявлять каждую переменную, используемую в программе. Это позволит сделать код более понятным, дисциплинирует, и в крупных разработках позволит сэкономить память и увеличить быстродействие при обработке данных. Для того чтобы в VBA включить обязательное объявление всех переменных, необходимо в начале модуля добавить строку: Option Explicit. После, на каждой не объявленной переменной будет происходить остановка программы, и отображаться ошибка до тех пор, пока всем переменным не будет присвоен тип в разделе Dim.
Константы
Константой называется значение, хранимое в памяти, которое в процессе работы программы не изменяется.
Константы используются в тех случаях, когда в коде программы используется один и тот же параметр, число, строка и т.д. Для того чтоб обеспечить удобство изменения этих параметров при необходимости, в начале кода программы описываются константы и им присваивается значение. Константы объявляются с помощью оператора Const. Например:
- Const MyIntConst as Integer = 8
- Const MyTxtConst as String = "Константа"
или без указания типа:
Const MyConst = 4,55
в этом случае константа типа Variant.
Внимание. В случае если при работе программы вы захотите изменить значение константы, программа завершится ошибкой. Поэтому будьте внимательны. Так же, не допускается совпадение имен констант и переменных. Требования к именам констант такие же, как и к переменным.
Закрепим все вышесказанное примером небольшого макроса, который рассчитает функцию $y = x+i * 2$, где $x=\frac{i}{7}$, $0
Как видно из функции $y, x, i$ - это переменные. Так как при расчетах используется деление, то $y, x$ будут содержать значения вещественного типа. Переменная $i$ - это счетчик с шагом 1. 2 - это постоянное значение, т.е. константа. Результат $y$ будет выведен в диалоговом сообщении msgBox.
$Option Explicit$
$Sub VarExample()$
$Const MyConst As Byte = 2$
$ Dim Y As Single$
$ Dim X As Single$
$ Dim i As Integer$
$For i = 1 To 100$
$ X = i / 7$
$ Y = X + i * MyConst$
$ Next i$
В результате выполнения данной процедуры мы получим $y=214,2857$.