Инструкции описания используются для описания процедур, переменных, массивов и констант и для присвоения им имен. Все переменные, константы, процедуры и функции имеют область действия, где они доступны. При описании процедур, переменных или констант задается также их область определения, которая зависит от того, где расположено описание и какие ключевые слова при этом использованы.
В VBA существует три уровня областей действия переменных: уровня процедуры, уровня модуля и уровня проекта. Эти уровни применимы и для массивов. Описания типов данных, определенных пользователем, которые должны располагаться в разделе описаний модуля VBA, по умолчанию имеют область действия уровня проекта.
Константы имеют те же три уровня действия, а процедуры – только два: модуля и проекта.
Описания представляют собой неисполняемые программные инструкции, в которых определяются имена процедур, констант, или переменных и задаются их характеристики (такие как тип данных).
При разработке приложений отдельные задачи можно выделить и оформить в виде процедур, сгруппированных в модули. Модуль включает в себя процедуры, которые описывают выполнение приложением конкретных задач. Процедуры используются для разбиения сложных программистских задач на более простые элементы.
Описания включаются в модули форм, в стандартные модули и в модули класса. Чтобы ввести описания уровня модуля, надо перейти в раздел описаний модуля. Чтобы ввести глобальные описания, надо перейти в раздел описаний модуля и использовать инструкцию Public для констант и переменных. Для создания описаний можно также воспользоваться ключевыми словами Dim, Static и Private.
Можно также вводить описания на уровне процедуры. Для любого программного уровня и для любого способа описания переменных или констант следует применять специальные правила, связанные с областями определения.
Чтобы открыть раздел описаний модуля, нужно выбрать в окне проекта модуль формы, стандартный модуль или модуль класса, который надо открыть, и выполнить команду Программа в меню Вид или контекстном меню, а затем выбрать элемент «(Общая область)» в списке «Объект», расположенном над окном программы. В находящемся справа списке «Процедуры» автоматически будет выведена область окна «(Описания)». Далее можно ввести описание или несколько описаний.
В описании указывается имя, которое будет использоваться для идентификации описываемой процедуры, параметра, переменной, константы или типа. При присвоении имен в модуле Visual Basic используются следующие правила:
– Имена должны начинаться с буквы.
– Имя не может содержать пробел, точку (.), восклицательный знак (!) или символы @, &, $, #.
– Имена не должны содержать более 255 символов.
– Как правило, не следует использовать имена, совпадающие с названиями функций, инструкций, и методов языка Visual Basic, так как при этом прекращается выделение в тексте одноименных ключевых слов языка. Чтобы использовать встроенные функции языка, инструкции или методы, имена которых конфликтуют с присвоенным пользователем именем, их необходимо явно указывать. Для этого перед именем встроенной функции, инструкции или метода, должно стоять имя связанной с ними библиотеки типов. Например, если имеется переменная с именем Left, то функция Left должна вызываться как VBA.Left.
– Не допускается использование повторяющихся имен на одном уровне области определения.
В языке Visual Basic не различаются строчные и прописные буквы, в инструкции описания сохраняются прописные буквы.
5.2.2. Структуризация программ VBA и правила записи кода процедур
Основной структурной единицей при написании программ на VBA является процедура.
Процедура представляет собой описание последовательности инструкций (команд, или операторов), задающих алгоритм решения задачи. Эта последовательность команд записывается всего один раз, но может выполняться там, где это необходимо. Описанные в процедуре операторы образуют код процедуры.
Любая инструкция VBA помещается в отдельной строке кода. Если запись команды оказывается слишком «длинной» и «не вписывается» в одну строку в окне программы, что затрудняет просмотр кода, ее можно разбить на несколько строк с помощью символов продолжения строки кода ‘ _’ (в конце строки, которая должна быть продолжена, ставятся пробел и символ подчеркивания). Если строка заканчивается на эти символы, следующая строка рассматривается как ее продолжение.
Для большей наглядности перед началом каждой инструкции ставятся пробелы (задается отступ с помощью табуляции). Отступы позволяют зрительно структурировать программу на экране, подчеркнуть вложенность команд в процедурах.
Инструкции и описания в процедурах сопровождаются комментариями. Комментарием считается текст, следующий за одиночным апострофом (символ ') до конца строки. Даже при записи макроса автоматически генерируется комментарий по информации, введенной в диалоговом окне «Запись макроса».
Самой «простой» инструкцией VBA является команда, имеющая вид:
ИмяПеременной = Выражение
или
Let ИмяПеременной = Выражение
Она осуществляет пересылку значения выражения, записанного в правой его части (после знака ‘=’), в переменную, имя которой указано в левой части оператора (перед знаком ‘=’). Тип значения выражения должен соответствовать типу переменной (если он задан явным описанием). В некоторых случаях автоматически выполняется преобразование типа. Полный синтаксис оператора предусматривает использование инструкции Let. Но инструкция Let необязательна и чаще всего опускается.
Для присвоения объекта переменной, описанной как объект, применяется инструкция Set. Ключевое слово Set обязательно. Инструкции, задающие значение свойства объекта, также являются инструкциями присвоения. Более детально объекты и их свойства рассматриваются ниже, так как набор объектов является специфичным для каждого приложения.
Более подробную информацию можно получить в справочной системе VBA (раздел «Инструкции присвоения»).
Другие инструкции, стандартные структуры управления (ветвления, циклы) описаны ниже.
Команды, включенные в процедуру, выполняются, когда к ней происходит обращение (вызов процедуры). Для идентификации процедуры при ее вызове ей присваивается имя, которое указывается в заголовке процедуры. Все имена в VBA состоят из одного слова – идентификатора, представляют собой последовательность букв и цифр, в имени не должно быть разделителей.
Процедура может вызываться в качестве макроса или функции из приложения Office.