logo search
Материалы к вопросам 2012_01_03

50. Основы программирования на языке Visual Basic for Applications

В программировании базовыми понятиями являются «переменная» и «значение переменной». Переменная (variable)  это величина (объект), значение которой меняется в ходе выполнения программы. Переменная в компьютере представляется по присвоенному ей имени, и ее значение определяется оператором присвоения.

Для каждого идентификатора переменной выделяется место в памяти, где хранится ее значение. Запомним и уясним, на первый взгляд, элементарное понятие: любая программа использует переменные и их значения. Для каждого встречаемого в программе нового имени переменной VBA автоматически определяет ее (выделяет для нее место в памяти). Это место остается пустым до присвоения переменной какого-либо значения. Переменные сравнивают с контейнерами для хранения данных любых типов.

Данные описывают объект числами, буквами и другими способами. Над числами выполняются арифметические, над буквами  логические операции. Уже это свидетельствует о разных типах данных, для каждого из которых приняты свои способы их внутримашинного представления.

Итак, каждая переменная обладает собственным типом. Типы данных делятся на простые (или скалярные) и сложные. У простых типов значения данных единые и неделимые. Простые типы данных подразделяются на арифметические, строковые и логические.

В Visual Basic Application применяются 11 типов данных и один пользовательский тип данных. При написании программ используются константы и переменные, которые могут применяться: в одной процедуре; во всех процедурах модуля; во всех процедурах базы данных.

VBA относится к языкам объектно-ориентированного программирования (ООП), которое можно описать как методику анализа, проектирования и написания приложений с помощью объектов.

Все визуальные объекты, такие, как Рабочая книга (WorkBook), Рабочий лист (Worksheet), Активная ячейка (ActiveCell), Диапазон (Range), Диаграмма (Chart), Форма (UserForm), являются объектами. В VBA имеется более 100 встроенных объектов.

Семейство (объект Collection) представляет собой объект, содержащий несколько других объектов, как правило, одного типа. Например, объект WorkBooks (Рабочие книги) содержит все открытые объекты WorkBook (Рабочая книга). Каждый элемент семейства нумеруется и может быть идентифицирован либо по номеру, либо по имени. Например, worksheets (1) обозначает первый рабочий лист активной книги, a worksheets (Лист1) - рабочий лист с именем Лист1.

В VBA используется механизм OLE (Object Linking and Embedding - связывание и внедрение объектов), который позволяет взаимодействовать с любыми программами, поддерживающими OLE. Вручную в рабочий лист OLE-объекты вставляются командой Вставка/Объект с выбором в появившемся диалоговом окне Вставка объекта из списка на вкладке Создание внедряемого объекта. OLE-объект отличается от обычного тем, что при выборе внедренного объекта (при перемещении на него указателя и щелчке кнопкой мыши) активизируется программа, связанная с этим объектом, и меню приложения заменяется меню программы, его создавшей.

Важнейшим понятием ООП является класс. Класс обычно описывается как проект, на основе которого впоследствии будет создан конкретный объект. Таким образом, класс определяет имя объекта, его свойства и действия, выполняемые над объектом. В свою очередь, каждый объект, в соответствии с описанным выше, является экземпляром класса.

Объектная библиотека VBA содержит более 100 различных объектов, находящихся на разных уровнях иерархии. Иерархия определяет связь между объектами и показывает пути доступа к ним.

Метод - действие, выполняемое над объектом. Метод можно применять ко всем объектам семейства. Синтаксис применения метода: Объект.Метод. Например, к семейству chartobjects (Диаграммы) рабочего листа Лист1 применен метод Delete (Удалить), который приводит к удалению всех диаграмм с рабочего листа Лист1:

Worksheets("Лист!") .ChartObj ects.Delete

Свойство – атрибут объекта, определяющий его характеристики, такие, как размер, цвет, положение на экране и состояние объекта, например доступность или видимость. Чтобы изменить характеристики объекта, надо просто изменить значения его свойств. Синтаксис установки значения свойства: Объект.Свойство = ЗначениеСвойства. Свойство можно изменять сразу у всех объектов семейства. Например, с помощью установки свойству Visible (Видимость) значения False (Ложь) все рабочие листы активной книги (семейство объектов Worksheets) скрываются:

Worksheets.Visible = False

Среди свойств особое место занимают свойства, возвращающие объект. Приведем наиболее часто употребляемые подобные свойства:

Ac t іveWindow Возвращает активное окно Excel

ActiveWorkbook Возвращает активную рабочую книгу окна Excel

ActiveSheet Возвращает активный лист активной рабочей книги

ActiveDialog Возвращает активное диалоговое окно активного рабочего листа

ActiveChart Возвращает активную диаграмму активного рабочего листа

ActiveCell Возвращает активную ячейку активного рабочего листа

Событие – действие, распознаваемое объектом (например, щелчок мышью или нажатие клавиши), для которого можно запрограммировать отклик. События возникают в результате действий пользователя или программы, или же они могут быть вызваны системой.

Суть программирования на VBA как раз и заключается в этих двух понятиях: событие и отклик на него. Если пользователь производит какое-то воздействие на систему, например нажимает кнопку, тогда в качестве отклика выполняется код созданной пользователем процедуры. Если такой отклик не создан, т. е. не написана соответствующая процедура, то система никак не реагирует на данное событие и оно остается безответным. Таким образом, действия, происходящие в системе, являются событиями, а отклики на них - процедурами. Этот специальный вид процедур, генерирующих отклик на события, называется процедурами обработки событий. В целом программирование на VBA состоит в создании кода программ, которые генерируют прямо или косвенно отклики на события.

Редактор VBA активизируется командой Сервис/Макрос/Редактор Visual Basic или нажатием кнопки Редактор Visual Basic панели инструментов Visual Basic. Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Вид Microsoft Excel или нажатием соответствующей кнопки на панели задач. Интерфейс VBA состоит из следующих основных компонентов: окна проекта, окна свойств, окна редактирования кода, окна форм, меню и панели инструментов.

Окно проекта в редакторе VBA активизируется выбором команды Вид/Окно проекта или нажатием кнопки Окно проекта. В окне проекта представлена иерархическая структура файлов форм и модулей текущего проекта.

В проекте автоматически создается модуль для каждого рабочего листа и для всей книги. Кроме того, модули создаются для каждой пользовательской формы, макросов и классов. По своему назначению модули делятся на два типа: модули объектов и стандартные. К стандартным модулям относятся те, которые содержат макросы. Такие модули добавляются в проект командой Вставка/Модуль. К модулям объектов относятся модули, связанные с рабочей книгой, рабочими листами, формами, и модули класса.

Формы создаются командой Вставка/Форма, а модули класса – командой Вставка/Модуль класса. По мере создания, добавления и удаления файлов из проекта эти изменения отображаются в окне проекта.

Окно редактирования кода служит в качестве редактора для ввода и изменения кода процедур приложения. Код внутри модуля организован в виде отдельных разделов для каждого объекта, программируемого в модуле. В окне редактирования доступны два режима представления кода: просмотр отдельной процедуры и всего модуля. Переключение режимов работы окна редактирования кода осуществляется выбором одной из двух кнопок в нижнем левом углу окна редактирования кода либо установкой или снятием флажка Просмотр всего модуля вкладки Редактор диалогового окна Параметры, отображаемого на экране командой Сервис/Параметры.

Для установки параметров редактора VBA используйте вкладку Редактор диалогового окна Параметры, вызываемого с помощью команды Сервис/Параметры.

Автоматическое отображение списка компонентов происходит только при установленном флажке Список компонентов вкладки Редактор диалогового окна Параметры, отображаемого на экране после выбора команды Сервис/Параметры.

Список компонентов можно выводить на экран нажатием комбинации клавиш Ctrl+J, при этом список отображается как при установленном, так и при снятом флажке Список компонентов вкладки Редактор диалогового окна Параметры.

Отображение списка компонентов, логически завершающих вводимую инструкцию, является одним из интеллектуальных качеств редактора кода. Другим его такого рода качеством является автоматическое отображение на экране сведений о процедурах, функциях, свойствах и методах после набора их имени (рис. 2.5).

Автоматическое отображение на экране сведений о процедурах, функциях, свойствах и методах после ввода их имени происходит только при установленном флажке Краткие сведения вкладки Редактор диалогового окна Параметры, отображаемого на экране после выбора команды Сервис/Параметры (см. рис. 2.3).

Описанную выше всплывающую подсказку можно также выводить на экран нажатием комбинации клавиш Ctrl+I. При этом «всплывающая» подсказка отображается как при установленном, так и при снятом флажке Краткие сведения вкладки Редактор диалогового окна Параметры.

Редактор кода также производит автоматическую проверку синтаксиса набранной строки кода сразу после нажатия клавиши Enter. Если после набора строки и нажатия клавиши Enter строка выделяется красным цветом, то это указывает на наличие синтаксической ошибки в набранной строке. Эту ошибку необходимо найти и исправить. Кроме того, если установлен флажок Проверка синтаксиса вкладки Редактор диалогового окна Параметры, отображаемого на экране посредством выбора команды Сервис/Параметры (рис. 2.3), кроме выделения красным цветом фрагмента кода с синтаксической ошибкой на экране

Программирование в среде Visual Basic for Applications отображается диалоговое окно, поясняющее, какая возможная ошибка произошла.

Редактор кода обладает еще одной мощной интеллектуальной возможностью, увеличивающей эффективность работы пользователя. Если курсор расположить на ключевом слове языка VBA, имени процедуры, функции, свойства или метода и нажать клавишу F1, то на экране появится окно со справочной информацией об этой функции.

Для создания диалоговых окон разрабатываемых приложений VBA используются формы. Редактор форм является одним из основных инструментов визуального программирования. Форма в проект добавляется с помощью команды Вставка/Форма или нажатием кнопки Вставить UserForm. В результате на экран выводится незаполненная форма с панелью инструментов Панель элементов.

В окне свойств перечисляются основные установки свойств выбранной формы или элемента управления. Используя это окно, можно просматривать свойства и изменять их установки. Для просмотра свойств выбранного объекта надо либо щелкнуть кнопку Окно свойств, либо выбрать команду Вид/Окно свойств.

Окно Просмотр объектов (Object Browser) вызывается командой Вид/Просмотр объектов или нажатием кнопки Просмотр объектов (рис. 2.9). В этом окне приведен список всех объектов, которые имеются в системе и которые можно использовать при создании проекта.

В настоящее время почти каждое приложение, предназначенное для ведения деловой документации, имеет макроязык и средство записи макросов.

При записи макроса основное приложение создает код, который можно просмотреть и отредактировать. самый простой способ разработать макрос - это записать его, а затем изменить созданный код.

Для записи макроса и редактирования его в редакторе VBA:

  1. Запустите в основном приложении средство автоматической записи макросов с помощью команды Сервис/Макрос/Начать запись. При этом на экране появится диалоговое окно Запись макроса. Задайте имя макроса (по умолчанию Мак-pocl, Макрос2 и т. д.) и нажмите кнопку ОК. При этом появится панель записи макроса Останов с кнопками Остановить запись и Пауза (для Word) и Относительная ссылка (для Excel). Выполните требуемую последовательность действий и остановите запись, нажав кнопку Остановить запись (кнопка Пауза используется, если необходимо выполнить какие-либо действия, которые не должны содержаться в коде программы, кнопка Относительная ссылка используется для переключения между записями с относительными и абсолютными ссылками).

  2. Выберите записанный макрос в списке макросов основного приложения, используя команду Сервис/Макрос/Макросы, а затем нажмите кнопку Изменить. При этом запускается редактор VBA и в окне модуля выводится текст созданного макроса, который можно изменить или добавить комментарии.

http://www.vbcoding.org.ua/litall/---visual-basic-for-applications.html

http://h20000.www2.hp.com/bizsupport/TechSupport/DriverDownload.jsp?prodNameId=1146514&lang=ru&cc=ru&prodTypeId=18972&prodSeriesId=1146511&taskId=