— основные конструкции языка Visual Basic for Application (VBA);
— основные объекты приложений Microsoft Excel и Microsoft Word;
— стандартные элементы управления;
уметь:
— использовать возможности, предоставляемые средой VBA, для решения аналитических и исследовательских задач;
— создавать макросы, функции пользователя и диалоговые окна на VBA;
— использовать объекты одного приложения в другом;
владеть:
— навыками создания программ на VBA.
Основные сведения о Visual Basic for Application
Инструменты, рассмотренные в предыдущих главах, позволяют решить большинство задач, возникающих у пользователей Microsoft Office. Однако опыт показывает, что всегда находятся такие задачи, которые либо неудобно, либо вообще невозможно решить с помощью стандартных средств пакета. В этом случае поможет только программирование.
Встроенным языком программирования в продуктах Microsoft Office является Visual Basic for Application (VBA). Он используется, прежде всего, для автоматизации часто решаемых задач (создания макросов). Эти макросы могут быть гораздо более «умными», чем те, которые получены с помощью команды Записать макрос. Для удобства пользователя можно также изменить интерфейс приложения: настроить ленту и контекстные меню, создать диалоговые окна, использовать элементы управления. В приложениях, где пользователь работает со встроенными функциями (Excel, Access), можно разрабатывать собственные функции. Все эти задачи решаются с помощью программирования на VBA.
Как следует из названия, VBA является упрощенной версией языка Visual Basic. У них много общего, особенно, в синтаксисе, но, тем не менее, это разные языки. Впервые VBA появился в Excel 5.0. С тех пор он входит в состав всех приложений Microsoft Office и не только. Используя встроенные объекты, с помощью VBA мы можем управлять приложением, но следует учитывать, что набор объектов в каждом программном продукте (Word, Excel, Access, PowerPoint и т.д.) свой. Поэтому, чтобы программировать на VBA, обычно мало знать синтаксис языка, нужно еще изучить объектную модель необходимого приложения. Далее мы рассмотрим основные объекты Excel и Word. Для более полного изучения объектов следует обращаться к специальной литературе и справочной системе соответствующего приложения.
Программа на VBA состоит из инструкций. Каждая инструкция должна быть написана на отдельной строке. Если нужно написать несколько инструкций на одной строке, то они разделяются двоеточием. Если же, наоборот, длинную инструкцию нужно разместить на нескольких строках, то в конце каждой строки, кроме последней, ставится так называемый символ продолжения: пробел с подчеркиванием.
Инструкции, предназначенные для решения определенной задачи, объединяются в процедуры. Все исполняемые инструкции обязательно должны находиться внутри какой-нибудь процедуры. Процедуры сохраняются в модулях. Модули могут быть различных типов: программный модуль, модуль формы, модуль класса.
Как и другие языки VBA имеет много зарезервированных слов, которые нельзя использовать в качестве имен переменных и процедур вашей программы. Регистры VBA не различает, поэтому слова For, for и FOR для него одинаковы.
Комментарий в программе задается с помощью апострофа. VBA игнорирует любой текст, начиная с апострофа, до конца строки. Таким образом, комментарий можно разместить как на отдельной строке, так и после инструкции в той же строке.
Основные типы данных VBA: Byte (байт), Boolean (логическое), Integer (целое), Long (длинное целое), Single (с плавающей точкой обычной точности), Double (с плавающей точкой двойной точности), Date (дата), Object (ссылка на объект), String (строка). Тип Variant VBA использует как тип по умолчанию.
Переменные в программах представляют собой именованное место хранения данных в памяти компьютера. Их имена должны удовлетворять следующим условиям:
· начинаться с буквы;
· не содержать пробел, точку, восклицательный знак и символы @, &, $, #;
· не совпадать с другими именами или с зарезервированными словами VBA;
При описании синтаксиса языков программирования квадратные скобки используют для того, чтобы показать, что какая-то часть синтаксической конструкции может отсутствовать. В приведенной выше инструкции они имеют именно этот смысл: тип переменной можно не указывать, в одной инструкции можно объявить более одной переменной через запятую. Если не указать тип переменной, то по умолчанию он будет Variant. Обратите внимание, что хотя имена переменных можно перечислять через запятую, тип нужно указывать для каждой переменной. После выполнения инструкции
Dim x, y, z As Integer
только z будет иметь тип Integer, а x и y – Variant.
Ключевое словоDim в объявлении переменной означает, что эта переменная – локальная. Если переменная объявлена внутри процедуры, то она существует только в этой процедуре. Если переменная объявлена в разделе глобальных объявлений модуля (перед первой процедурой), то она будет доступна для всех процедур этого модуля, но для других модулей такая переменная все равно будет «невидимой».
Вместо Dimможно использовать Private или Public. Private отличается от Dim тем, что не может объявлять переменные внутри процедуры, при объявлении же в разделе глобальных объявлений модуля Dim и Private равнозначны.
Переменная, объявленная как Public, является глобальной на уровне приложения и доступна из всех модулей. Такую переменную следует объявлять в разделе глобальных объявлений модуля. Если переменная объявлена в программном модуле, то в других модулях достаточно указать ее имя. Если переменная объявлена в форме, то из других форм и модулей доступ к ней возможен через конструкцию ИмяФормы.ИмяПеременной.
Переменные в программах на VBA можно не объявлять. В этом случае они по умолчанию имеют тип Variant. Необходимые преобразования типов при работе программы выполняются автоматически. Однако программы с такими переменными работают медленнее и менее надежны. Например, очень трудно заметить ошибку, вызванную элементарной опечаткой, когда в имени А1 вы в одном месте использовали русскую букву, а в другом – английскую. В результате у вас получились две переменные, имена которых на экране выглядят одинаково. Чтобы обезопасить себя от подобных ошибок, рекомендуется добавить в качестве первой строки каждого модуля инструкцию Option Explicit. В этом случае при обнаружении необъявленной переменной будет выводиться сообщение об ошибке.
Константы в VBA объявляются с помощью слова Const. Ниже приведено несколько примеров:
VBA автоматически определяет тип константы по ее значению, но тип можно указать и явно, как это сделано в последнем примере. Если вы хотите объявить глобальную константу, то, как и для переменных, следует использовать слово Public.
Для работы с текстом VBA использует тип String. В языке существуют два типа строк: фиксированной и переменной длины. Максимальная длина строки фиксированной длины равна 65535 символов. Длина строки фиксированной длины указывается при объявлении переменной после символа звездочка. Если при присваивании фактическое значение строки будет меньше, то строка дополняется пробелами справа, если больше – то сохраняются первые символы строки, лишние символы в конце строки теряются. Строки переменной длины теоретически могут содержать до 2 млрд символов. В следующем примере объявлены 2 переменные: Name и Text. Name имеет длину 20 символов, Text – переменную длину.
Dim Name As String * 20
Dim Text As String
В языке имеется большое количество встроенных функций для работы с различными типами данных.
Основные математические функции приведены в таблице 12.1.