Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

Глава 7. Введение в VBA

163

Сравнение VBA и XLM

До появления Excel 5 разработчиками использовался мощный (но сложный для по­ нимания) язык макросов под названием XLM. Более поздние версии Excel все еще вы­ полняют макросы XLM, но начиная с Excel 97 пользователи не имеют возможности соз­ давать макросы на языке XLM. Как разработчик вы должны знать о существовании XLM (на случай, если столкнетесь с макросами, написанными на этом языке), но для собст­ венных разработок используйте исключительно VBA.

Примечание

Не путайте макроязык XLM с языком XML (extensible Markup Language — расширяемый язык разметки). Хотя в аббревиатурах, обозначающих эти языки, используются одни и те же буквы, между ними нет ничего общего. С помощью XML организуется формат, предназначенный для хранения структурированных данных. Формат XML по умолчанию применяется всеми приложениями Office 2010.

Основы VBA

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

Далее кратко описана структура VBА.

Код. Действия в VBA осуществляются в результате выполнения кода VBA.

Модуль. Вы создаете (или записываете) программу VBA, которая сохраняется в модуле VBA. Модуль VBA состоит из процедур.

Процедуры. Процедура, по существу, представляет собой элемент компьютерной

программы, выполняющей определенное действие. В VBA поддерживаются два типа процедур: Sub (подпрограмма) и F u n c tio n (функция).

Sub. Процедура Sub включает набор операторов, которые могут вызываться различными способами. Ниже приводится пример простой процедуры Sub под названием T est. Эта процедура вычисляет сумму, а затем отображает резуль­ тат в окне сообщений.

Sub T e s t()

Sum = 1 + 1

MsgBox "Ответ " & Sum

End Sub

F u n ctio n . Модуль VBA может также включать процедуры типа F u n ctio n . Эта процедура возвращает единственное значение (иногда массив значений) и может вызываться из другой процедуры VBA или использоваться в формуле рабочего листа. Ниже приводится пример функции под названием AddTwo.

F u n c tio n

A d dT w o (a rg l, arg2)

AddTwo

= a rg l + arg2

End F u n c tio n

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

164 Часть III. Visual Basic for Applications

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

Объекты могут выступать контейнерами других объектов. Например, Excel — это объект под названием A p p l i c a t i o n ; он содержит другие объекты, например

W o r k b o o k и C o m m a n d B a r .

Объект W o r k b o o k

содержит другие объекты, напри­

мер W o r k s h e e t и C h a r t .

Объект W o r k s h e e t

может включать такие объекты,

как R a n g e , P i v o t T a b l e

и т.д. Совокупность объектов называется объектной

моделью Excel.

 

 

Коллекции. Одинаковые объекты образуют коллекцию. Например, коллекция

W o r k s h e e t s включает все рабочие листы в указанной рабочей книге. Коллекция C o m m a n d B a r s включает все объекты C o m m a n d B a r . Коллекции сами являются объектами.

Иерархия объектов. При ссылке на объект, вложенный в другой объект, положе­ ние в иерархической структуре объектной модели задается с помощью точки-

разделителя. Например, на рабочую книгу К н и г а 1 . x l s x можно сослаться так:

A p p l i c a t i o n . W o r k b o o k s ( " К н и г а 1 . x l s x " )

При этом устанавливается ссылка на рабочую книгу К н и г а 1 . x l s x в коллекции W o r k b o o k s . Эта коллекция содержится в объекте Excel под названием A p p l i ­ c a t i o n . Переходя на следующий уровень, можно сослаться на лист Л и с т 1

в книге К н и г а 1:

A p p l i c a t i o n . W o r k b o o k s ( " К н и г а 1 . x l s x " ) . W o r k s h e e t s ( " Л и с т 1 " )

Можно также перейти на уровень ниже и сослаться на отдельную ячейку:

A p p l i c a t i o n . W o r k b o o k s ( " К н и г а 1 . x l s x " ) . W o r k s h e e t s ( " Л и с т 1 " ) . R a n g e ( " A l " )

Активные объекты. При опущенной ссылке на объект Excel использует актив­ ные объекты. Если активной рабочей книгой является К н и г а 1 , ссылка записыва­ ется в упрощенном виде:

W o r k s h e e t s ( " Л и с т 1 " ) . R a n g e ( " А 1 ")

Если известно, что активным листом является Л и с т 1 , ссылку можно упростить

еще больше: R a n g e ( " А 1 " ).

Свойства объекта. Объекты имеют свойства. Свойство может рассматриваться

как настройка объекта. Например, объект диапазона имеет свойства V a l u e и Nam e. Объекту диаграммы присущи свойства H a s T i t l e и Туре. Для опреде­ ления (изменения) свойств объекта можно использовать VBA.

Сослаться на свойство можно, записав объект и свойство, разделенные точкой. Например, сослаться на значение в ячейке А1 листа Л и с т 1 можно так:

W o r k s h e e t s ( " Л и с т 1 " ) . R a n g e ( " A l " ) . V a l u e

Переменные VBA. Переменным VBA можно присваивать значения. Рассматри­ вайте переменную как имя, которое применяется для хранения определенного значения. Так, если значение в ячейке А1 на листе Л и с т 1 нужно присвоить пере­ менной I n t e r e s t , используйте следующий оператор VBA:

I n t e r e s t = W o r k s h e e t s ( " Л и с т ! " ) . R a n g e ( " A l " ) . V a l u e

R e s t a u r a n t .
R e s t a u r a n t s

Глава 7. Введение в VBA

165

Методы объектов. Все объекты имеют методы. Метод — это действие, которое

выполняется над объектом. Например, один из методов объекта R ange называет­ ся C le a r C o n t e n ts . Он удаляет содержимое диапазона ячеек. Методы вводятся после названия объекта с методом, причем в качестве разделителя используется точка. Например, для удаления содержимого ячейки А1 с активного рабочего лис­ та используется следующая конструкция: R ange ( "А111) . C le a r C o n t e n ts .

Стандартные конструкции языков программирования. В состав VBA входят все конструкции современных языков программирования, включая массивы, циклы и т.д.

События. Некоторые объекты распознают определенные события, причем можно создать код VBA, который вызывается при наступлении определенных событий. На­ пример, открытие рабочей книги приведет к вызову события W orkbook_Open. Изме­ нение ячейки в рабочей книге приведет к вызову события W ork sh eet_ C h an ge.

Следует отметить, что в этом разделе VBA описан достаточно полно. Теперь вам ос­ талось изучить представленные возможности более подробно, чему и посвящена осталь­ ная часть главы.

Аналогия

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

Основной объект Excel — W o rk b o o k (Рабочая книга). В сети ресторанов быстрого питания основным элементом является отдельный ресторан. В Excel можно добавлять либо закрывать рабочие книги, а набор открытых рабочих книг называется W o rk b o o k s (коллекция, состоящая из объектов W o rkbo ok). Аналогично, руководство сети рестора­ нов быстрого питания может открывать и закрывать рестораны, и все они в сети рас­ сматриваются как коллекция — набор из объектов

Рабочая книга Excel является объектом, но она содержит и другие объекты, такие как рабочие листы, диаграммы, модули VBA и т.д. Более того, каждый объект в рабочей книге может включать собственные объекты. Например, объект W o r k s h e e t может включать объекты Range (Диапазон), P i v o t T a b l e (Сводная таблица), S ha pe (Фигура) и т.д.

По нашей аналогии ресторан быстрого питания (подобно рабочей книге) может включать такие объекты, как K i t c h e n (Кухня), D i n i n g A r e a (Столовое помещение) и T a ­ b le s (Столы), т.е. целую коллекцию. Более того, руководство может добавлять объекты в объект R e s t a u r a n t или удалять их. Например, в коллекцию T a b l e s (Столы) могут до­ бавляться отдельные столы. Каждый из этих объектов может включать другие объекты. Например, объект K i t c h e n (Кухня) может включать такие объекты, как s t o v e (Плита), V e n t i l a t i o n F a n (Вытяжка), C h e f (Шеф-повар), S i n k (Раковина) и т.д.

Пока что все хорошо, и аналогия работает. Посмотрим, можно ли продолжить сравнение.

Объекты Excel имеют свойства. Например, объект Range (Диапазон) включает свойства Value (Значение) и Name (Имя), а объект S hape (Фигура)— w i d t h (Ширина) и H e i g h t (Высота). Объекты из ресторана быстрого питания также имеют свойства. Например, объек­

ту Stove

(Плита) присущи такие свойства, как T e m p e ra tu re (Температура) и N u m b e ro f-

Bu m ers

(Количество конфорок). Объект V e n t i l a t i o n F a n (Вытяжка) имеет собственный

наборсвойств (T u m edO n (Включить), R P M (Изменить скорость вращения) и т.д.).

Помимо свойств, объекты Excel имеют методы, выполняющие операции над объектами. Например, метод C l e a r C o n t e n t s (Удаление содержимого) удаляет содержимое объекта