Что такое VBA (Visual Basic for Applications)

Что такое VBA (Visual Basic for Applications)

VBA — относительно легкий язык программирования. Он прост в освоении и позволяет быстро получать ощутимые результаты — конструировать профессиональные приложения, решающие практически все задачи, встречающиеся в среде Windows. При этом создание многих приложений с использованием VBA проще и быстрее, чем при помощи других языков программирования.

 

VBA применяет технологию визуального программирования, т. е. конструирование рабочей поверхности приложения и элементов его управления непосредственно на экране, а также запись всей программы или ее частей при помощи MacroRecorder.

 

При беглом знакомстве с технологией визуального программирования может создаться впечатление, что она сводится к записи макросов, помещению в формы элементов управления и определении их связей с макросами. Довольно часто при решении простейших задач так и происходит. Но если требуется создать сколько-нибудь продвинутое приложение с содержательной обработкой данных, то на первый план выступает сам язык VBA. Такое заключение можно сделать даже на примере, рассмотренном в предыдущей главе. Если бы требовалось сделать макрос Расходы универсальным, не зависящим от имени рабочего листа, то необходимо было бы внести изменения в коды программы, а для этого надо понимать их структуру.

 

Объекты и их семейства

VBA относится к языкам объектно-ориентированного программирования (ООП). ООП можно описать как методику анализа, проектирования и написания приложений с помощью объектов. Что такое объект? Объект nq-зволяет инкапсулировать данные вместе с кодом, предназначенным для их обработки, т. е. объединить их в нечто целое, именуемое объектом. VBA не является объектно-ориентированном языком в строгом понимании этого слова, однако объектный подход играет в нем большую роль. Все визуальные объекты, такие какрабочий лист (worksheet), диапазон (Range), диаграмма (Chart), форма (userForm), являются объектами. В VBA имеется более 100 встроенных объектов.

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

 

Объекты OLE и ActiveX

В VBA используется механизм OLE (Object Linking and Embedding — связывание и внедрение объектов), который позволяет взаимодействовать с любыми программами, поддерживающими OLE. Примером элементов, которые можно интегрировать при помощи механизма OLE, являются вставляемые объекты OLEObject, создаваемые, например, при помощи программ WordArt, ClipArt и т. д. Все OLE-объекты рабочего листа образуют семейство oLEObjects. Вручную в рабочий лист OLE-объекты вставляются командой Вставка, Объект (Insert, Object) с выбором в появившемся диалоговом окне Вставка объекта (Object) из списка на вкладке Создание (Create New) внедряемого объекта. OLE-объект отличается от обычного тем, что при выборе внедренного объекта (перемещении на него указателя и щелчке кнопкой мыши) активизируется программа, связанная с этим объектом, и меню приложения заменяется меню программы, его создавшей. Теперь можно, не выходя из основного приложения, работать с данным объектом, редактируя и видоизменяя его средствами создавшей его программы. Кроме того, OLE-технологля обладает так называемым свойством Automation, с помощью которого можно устанавливать свойства, применять методы и обрабатывать события внедренных объектов, как обычных объектов приложения.

 

С 1996 года фирма Microsoft ввела новую терминологию и теперь то, что раньше именовалось OLE-объект, называется объектом ActiveX, a OLE Automation называется ActiveX Automation.

 

Классы

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

 

Методы

Объект сам по себе не представляет большого значения. Намного значительнее то, какие действия можно совершать над объектом, и какими свойствами он обладает. Метод как раз и представляет собой действие, выполняемое над объектом.

 

Синтаксис применения метода:

 

Объект.Метод

 

В данном примере при помощи метода Quit [cut]

(закрыть) закрывается приложение (объект Application).

 

Application.Quit

 

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

 

Worksheets("Лист!").Chartobjects.Delete

Свойства

 

Свойство представляет собой атрибут объекта, определяющий его характеристики, такие как размер, цвет, положение на экране и состояние объекта, например, доступность или видимость. Чтобы изменить характеристики объекта, надо просто изменить значения его свойств.

 

Синтаксис установки значения свойства:

 

Объект.Свойство = ЗначениеСвойства

 

В следующем примере изменяется заголовок окна Excel посредством задания свойства Caption объекту Application:

 

Application.Caption = "Пример"

 

Свойство можно изменять сразу у всех объектов семейства. В приведенном ниже примере с помощью установки свойству visible (видимость) значения False (ложь) все рабочие листы активной книги (семейство объектов worksheets) скрываются:

 

Worksheets.Visible = False

 

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

 

ActiveWindow

Возвращает активное окно Excel

ActiveWorkbook

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

ActiveSheet

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

ActiveDialog

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

ActiveChart

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

ActiveCell

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

 

Свойство ActiveCell возвращает активную ячейку активного рабочего листа активной рабочей книги. Следующие три примера возвращают одну и ту же активную ячейку. Обратите внимание на первый из них. Его особенностью является то, что свойство, возвращающее объект, в инструкции записывается без этого объекта. Такой способ записи является допустимым и применяется к широкому классу свойств, возвращающих объекты.

 

ActiveCell

ActiveWindow.ActiveCell

Application.ActiveWindow.ActiveCell

 

События

 

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

 

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

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Комментарий будет опубликован после проверки

(обязательно)