Общие сведения
В этом разделе мы приведем ряд сведений общего характера, которые не следует пропускать. Пример в самом начале раздела поможет в дальнейшем по аналогии создавать простые программы, тестирующие приведенные листинги. Условные обозначения помогут разобраться в использовании синтаксиса языковых конструкций. Необходимость описания алфавита и лексики не требует комментариев.
Но, прежде всего, давайте попытаемся привести первое формальное определение VBA. VBA — это визуальный объектно-ориентированный язык программирования высокого уровня .
Язык программирования высокого уровня — это язык программирования, в который введены элементы, допускающие описание программы в наглядном, легко воспринимаемом человеком виде, упрощающие и автоматизирующие процесс программирования. Конструкции языка программирования высокого уровня отражают естественные для человека понятия, а не архитектуру и не систему команд компьютера. Поэтому программа, составленная на языке программирования высокого уровня, сначала особым образом обрабатывается компьютером (транслируется или интерпретируется), а затем выполняется.
В визуальном языке программирования взаимодействие пользователя с системой программирования при составлении и отладке программ реализуется диалоговыми средствами графического интерфейса пользователя (см. раздел 20.6 "Редактор Visaиl Basic for Application").
Объектно-ориентированное программирование (ООП) — наиболее популярная в настоящее время методология программирования. Центральной идеей ООП является инкапсуляция, т. е. структурирование программы на модули особого вида, объединяющие данные и процедуры их обработки, причем внутренние данные модуля могут быть обработаны только предусмотренными для этого процедурами (см. главу "Объектная модель Outlook 2002").
Если после данной расшифровки легче не стало, не волнуйтесь и не откладывайте книгу до лучших времен. В процессе изложения многие термины невозможно определять без ссылок вперед, но и оставлять термин или понятие без какого-либо внимания тоже считается некорректным. Таким образом, мы сейчас и в дальнейшем будем прибегать к следующему методу изложения: краткое, по возможности формальное определение, отражающее суть предмета, но без особых комментариев и с обязательной ссылкой вперед, где подробно, в доступной форме будет объяснен и термин, и сопутствующий ему материал.
Итак, после исторического экскурса и ряда формальных определений можно было бы перейти к описанию алфавита и лексики языка, но мы решили сделать паузу и привести пример. Для дальнейшего изучения мы сочли необходимым привести пример разработки простейшей программы, начиная с запуска редактора VBE, создания модуля, написания и выполнения кода. Без объяснения конструкций и интерфейса, но с многочисленными ссылками вперед. Это позволит вам на первых порах при необходимости и желании проверить приведенные ниже примеры в действии. Цель данного раздела — создать программу по выводу диалогового окна с надписью "Здравствуй, мир!" Этот пример неслучаен — с написания подобных элементарных программ начинаются многие учебники по языкам программирования, и мы решили не нарушать традицию.
Запустите Microsoft Outlook 2002. Выберите команду > сервис> макрос > Редактор visual Basic или просто нажмите комбинацию клавиш <Alt>+<Fl 1> (Запуск редактора).
В меню редактора выберите команду > insert> Module (Вставка модуля) и введите следующий код:
Программа 20.1. Вывод диалогового окна с надписью "Здравствуй, мир!"
Sub hello <Enter>
<Tab> MsgBox("Здравствуй, мир!")
Замечание
В коде программы есть еще одна строка (End Sub), но она появляется автоматически, вводить ее не нужно.
Программа готова! Осталось ее запустить, нажав кнопку Run Sub/User Form на панели инструментов Стандартная или клавишу <F5> (Запуск строки).
Результат и окно редактора VBA продемонстрированы на рис. 20.1.
Таким образом, для тестирования приведенных ниже примеров использования синтаксических конструкций вам будет достаточно проделать аналогичные операции, только вместо функции MsgBox необходимо будет вставлять код той или иной конструкции, непосредственно беря их из листингов в книге. При возникновении затруднений при работе с редактором VBA вы всегда можете досрочно обратиться к разделу 20.6 "Редактор Visual Basic for Application". Впрочем, мы надеемся, что данная возможность не будет востребована, поскольку примеры очень просты и, в принципе, не требуют тестирования на компьютере.
Рис. 20.1. Окно редактора и диалоговое окно с надписью "Здравствуй, мир!"
После рассмотрения примера вернемся к описанию языка. Для этого введем условные обозначения для описания языка.
Существует множество языков программирования, и способов их описания не намного меньше. Но какого-то определенного способа, лучшего во всех отношениях, нет. Например, неформальное описание языка для начинающего пользователя сильно отличается от формального стандарта, предназначенного для разработчиков системы программирования. Что касается нашей практики, то при изложении подобного материала мы руководствуемся описанной выше концепцией. Но это, так сказать, глобальные понятия, однако нам не обойтись и без частных принципов описания, таких как используемые обозначения и терминология.
- Описания элементов языка сгруппированы по смыслу в разделы. Описание ведется исходя из концепции, изложенной в начале этой главы.
- Синтаксис каждой конструкции объясняется на схематическом примере, с использованием условных обозначений, приведенных в табл. 20.1.
Обозначение | Смысл |
Прямой шрифт | Данная конструкция остается без изменений (например, ключевые слова) |
Курсив | Конструкция должна быть заменена конкретным текстом |
<выражение> | Название используемых конструкций |
[Счетчик] | Конструкция не обязательна и может быть опущена |
{А, ..., Z} | Множество возможных значений |
А|В | А или В |
Таблица 20.1. Условные обозначения
- Ключевые слова даются без переводов и пояснений. Мы убеждены, что это единственно правильный метод, т. к. ключевые слова суть иероглифы, смысл которых задается описанием языка программирования, а отнюдь не тем значением, которое эти слова имеют в естественном языке.
- Семантика конструкций объясняется на микропримерах, которые представляют собой небольшие фрагменты кода без глобального контекста. В принципе, они не требуют выполнения на компьютере и предназначены только для чтения, но при необходимости вы можете ввести код по аналогии с вышеприведенным примером "Здравствуй, мир!" и проанализировать работу конструкции с помощью компьютера.
- Для обозначения общих понятий информатики мы используем термины, которые уже устоялись в отечественной литературе по программированию, даже если наша терминология расходится с терминологией, использованной при локализации приложений.
Итак, все готово к легкому и непринужденному изучению языка VBA. Не задерживаясь ни на минуту и следуя вышеизложенному плану, приступаем к изучению алфавита и лексики языка.
Как и естественный язык, так и язык программирования имеет некоторую лексическую структуру, которую мы сейчас и опишем. Алфавит языка программирования — это набор символов (разрешенный к использованию и воспринимаемый компилятором), с помощью которого могут быть образованы выражения и операторы данного языка. Под символами мы подразумеваем все, что можно ввести с клавиатуры (буква (А), цифра (7), знак (© — <Alt> + <0169>) и т. д.).
Далее перечислены лексемы и символы, их составляющие.
- Число
- Цифры от 0 до 9
- Символ точка (.) и буква Е (или е)
- Имя (идентификатор)
- Латинские строчные и прописные буквы (A— Z, a— z),
- Буквы кириллицы, также строчные и прописные (А— Я, а — я)
- Арабские цифры (0— 9)
- Символ подчеркивания _
- Символы типа @ # & $ % !
- Строка
- Все символы алфавита
- Разделители
- Символ пробела
- Символ продолжения строки (_)
- Символы табуляции
- Символ новой строки
- Специальные символы, служащие для построения различных конструкций:
- <, >, =
Итак, после описания алфавита приведем правила образования слов в VBA. Всего существует четыре класса слов: имена, ключевые слова, числа и строки. при этом слова отделяются друг от друга разделителями и/или специальными символами, как правило, это пробелы или символы табуляции.
Имя (идентификатор) — это последовательность символов, указанных во втором пункте, длиной не более 255 знаков; первый символ данной последовательности обязан быть буквой; последовательность должна быть отлична от ключевых слов; в конце может стоять символ типа переменной; буквы в верхнем и нижнем регистре не различаются.
Замечание
Дело в том, что за регистр в VBA отвечает встроенный текстовый редактор VBE (Visual Basic Editor), который автоматически меняет регистр при повторном вводе идентификатора. То есть, если при объявлении используется имя fileName, то как бы его потом не вводили filename или FiLEnaME, редактор приведет его к первоначальному виду.
Для построения римских цифр используется латинский алфавит, например XXI (21) — это прописные х, х и i.
Вы можете составлять имена, используя все богатство воображения, но есть ряд правил хорошего тона, которые служат для повышения удобочитаемости программ. Более того, они позволят избежать стандартных ошибок.
Во-первых, имена должны быть не слишком длинными, но отражающими характер их использования в программе. Например, если вы хотите ввести переменную, обозначающую количество проданных издательством "Чародейство и Волшебство" книг, то рекомендуется следующий вариант имени: numbBookSaie. Данное правило сыграет для вас огромную роль при написании больших программ, когда их чтение через год будет таким же легким, как будто вы писали их код вчера.
Во-вторых, рекомендуется начинать имена со строчной, а не с прописной буквы. Поскольку при вводе ключевых слов VBA и имен стандартных объектов первая буква автоматически преобразуется в прописную. Таким образом вы будете избавлены от риска нечаянно использовать запрещенное имя переменной.
В-третьих, при начальном определении имени или процедуры, при обозначении какого-то ключевого момента в программе следует использовать комментарии. Комментарии строятся следующим образом: после символа (') следует текст комментария. Например:
Программа 20.2. Комментарий
Sub numbBookSaie () 'Процедура подсчета количества проданных книг
В-четвертых, если строка программы не помещается целиком в окне редактора кода, то при использовании символа _ и продолжении кода на следующей строке компилятор будет воспринимать две строки за одну.
От описания идентификаторов перейдем к другим лексемам языка — строкам, числам и ключевым словам.
Строка — последовательность символов, заключенная в двойные кавычки ("..."), при этом под символами подразумеваются все вышеуказанные.
Число — это лексема, служащая для записи числовых значений (включая даты). Для записи десятичных чисел используются цифры и точка (123.456), также можно представлять число с помощью экспоненциального представления и символа Е или е. Этот символ указывает на то, что истинное число равно числу, стоящему перед Е (оно называется мантиссой), умноженному на 10 в степени числа, стоящего после Е (оно называется порядком). Например, лексема 1.234Е+6 обозначает число 1234000.
Ключевое слово — это специальная лексема, смысл которой зафиксирован правилами языка и по которой транслятор (и человек) распознает основные языковые конструкции. Ключевыми словами VBA, например, являются True, For, String И Т. Д.