![](/user_photo/2706_HbeT2.jpg)
Diagrammy_v_Excel_Dzhon_Uokenbakh_2003
.pdf'*Л #**11^Ж,.,
Использование VBA
В этой части...
Глава 13. |
Введение в VBA |
Глава 14. |
Принципы программирования на VBA |
Глава 15. |
Объекты, коллекции, свойства и методы |
Глава 16. |
Использование VBA в диаграммах |
Глава 13
Введение в VBA
В этой главе...
• |
Основные принципы VBA |
355 |
• |
Редактор Visual Basic |
358 |
В этой главе представлено краткое введение в язык программирования VBA (Visual Basic for Application). Язык VBA используется для автоматизации различных средств Excel, включая диаграммы.
Читая эту главу, вы познакомитесь с базовыми принципами VBA и редактора Visual Basic, необходимыми для понимания материала следующих глав.
Основные принципы VBA
Язык VBA — это общий для многих приложений Microsoft язык сценариев. Поми мо приложений Microsoft Office, VBA используется во многих приложениях других производителей программного обеспечения. В рабочих книгах Excel язык VBA при меняется для создания процедур, часто называемых макросами.
Ниже приведен краткий обзор основных принципов VBA.
Любое действие — это выполнение кода VBA. Код VBA хранится в модулях VBA.
Модули VBA хранятся в рабочих книгах Excel, однако просматривать и редактировать их можно только с помощью редактора Visual Basic.
Модуль VBA состоит из процедур.
Процедура — это единый и неделимый (после создания) фрагмент компьютерного ко да, выполняющий определенное действие. Ниже приведен пример простой процедуры Test, вычисляющей сумму двух величин и выводящей результат в окно сообщения.
Sub |
T e s t О |
|
|
Sum |
= 1 + 1 |
|
MsgBox "Сумма равна " & Sum |
|
End |
Sub |
|
Процедуры VBA делятся на подпрограммы (Sub) и функции (Function).
Функция возвращает одно значение. Ее можно вызвать из другой процедуры VBA или из формулы рабочего листа. От функции подпрограмма отличается только тем, что у нее нет возвращаемого значения (хотя результаты работы подпрограммы могут передаваться в вызывающую процедуру посредством аргументов). В этой книге рас сматриваются только подпрограммы.
Код VBA обрабатывает объекты хост-приложения (в данном случае хост-приложением является Excel).
Код VBA может обрабатывать более 100 классов объектов, используемых в рабочих книгах Excel. Примеры объектов — рабочая книга, рабочий лист, диапазон, диаграм ма, автофигура и т.д. Кроме упомянутых, в ваше распоряжение предоставлено еще до вольно много объектов, которые можно обрабатывать с помощью кода VBA.
Классы объектов упорядочены в иерархическую систему.
Объекты могут служить контейнерами других объектов. Например, Excel — это объект Application, он содержит объекты Workbook (рабочая книга), CommandBar (командная панель) и т.д. В свою очередь, объект Workbook может содержать другие объекты: Worksheet (рабочий лист). Chart (лист диаграмм) и т.д. Объект Worksheet может содержать объекты Range (диапазон), PivotTable (сводная таблица) и т.д. Система этих объектов называется объектной моделью Excel
Похожие объекты объединены в коллекции.
Например, коллекция Worksheets состоит из всех рабочих листов данной книги, коллекция Charts — из листов диаграмм, коллекция Chartobjects — из всех вне дренных диаграмм. Коллекция сама является объектом.
При обращении к объекту задается его положение в иерархии объектов путем пере числения вышележащих контейнеров. В качестве символа-разделителя перечисляемых контейнеров используется точка.
Например, ссылка на рабочую книгу Книгах . xls выглядит так*:
Application.Workbooks("Книга!.xls")
Это означает, что рабочая книга Книгаl.xls находится в коллекции Workbooks, кото рая, в свою очередь, находится в объекте Application. Расширив ссылку на один уровень вниз, можно обратиться к листу Лист1, хранящемуся в рабочей книге Книга!:
Application.Workbooks("Книга!.xls").Worksheets("Лист!")
Опустившись еще на один уровень вниз, можно обратиться к отдельной ячейке:
Application.Workbooks("Книга!.xls"). _ Worksheets("Лист!").Range("А!")
Если опустить ссылку на один из промежуточных объектов, то используется
активный объект.
Если Книга! является активной рабочей книгой, то предыдущую ссылку можно записать так:
Worksheets("Лист!").Range("А!")
Если активен рабочий лист Лист!, то ссылку можно упростить еще больше: Range("А!")
Объекты имеют свойства.
Свойство можно представить себе как параметр объекта. Например, объект Range (диапазон) имеет такие свойства, как Value (значение) и Name (имя), объект Chart (диаграмма) — свойства HasTitle (имеет заголовок) и ChartType (тип диаграммы). С помощью кода VBA вы можете задавать или изменять свойства объектов.
Ссылка на свойство состоит из ссылки на объект и имени свойства, разделенных точкой.
Например, к свойству Value (значение) ячейки А1, расположенной в рабочем лис те Лист!, можно обратиться так:
Worksheets("Лист!").Range("A!").Value
Как ни странно, в Excel нет объекта, представляющего отдельную ячейку. Од на ячейка — это просто объект Range, состоящий из единственной ячейки.
*В русифицированной версии Excel в именах процедур, объектов, переменных и т.д. допус кается использование символов кириллицы. Естественно, это не относится к предопределенным именам, таким, как Application, Workbooks и т.д. — Прим. ред.
3 5 6 Часть III. Использование VBA
Разработка новых функций рабочих листов. В Excel представлен весьма широкий ассортимент встроенных функций рабочих листов, однако в некоторых ситуациях их все же недостаточно. С помощью VBA можно создавать дополнительные функ ции, облегчающие решение практических задач. Можно также записать формулу или часть формулы в виде одной функции, тогда в рабочих листах вместо длинной формулы можно будет вводить лишь короткое имя функции.
Создание полнофункциональных приложений, управляемых макросами. Макросы Excel могут выводить пользовательские диалоговые окна и добавлять новые ко манды в главное меню.
Создание модулей, встраиваемых в Excel (надстроек). Примером надстройки Ex cel служит инструмент JWalk Chart Tools, разработанный автором средствами VBA.
Редактор Visual Basic
прежде чем начать работать с языком VBA, вы должны ознакомиться с инструмен том, предназначенным для редактирования, отладки и запуска кодов VBA. Речь идет о редакторе Visual Basic. Он работает с модулями VBA, содержащими код УВД.
Предполагается, что у вас установлена Excel 97 или более поздняя версия. В предыдущих версиях отдельного редактора Visual Basic нет.
Активизация редактора Visual Basic
Работая в Excel, активизировать редактор Visual Basic можно любым из следующих способов:
•нажать клавиши <Alt+Fll>;
•выбрать команду Сервис==М\/1акрос^=> Редактор Visual Basic;
•щелкнуть на кнопке Редактор Visual Basic, расположенной на панели инстру ментов Visual Basic (по умолчанию эта панель скрыта).
Окно редактора Visual Basic показано на рис. 13.1. На вашем экране оно, скорее всего, выгладит по-другому. Отдельные окна редактора Visual Basic можно скрывать, выводить, стыковать, перемещать, изменять их размеры и т.д.
Компоненты редактора Visual Basic
Редактор Visual Basic состоит из многих компонентов, наиболее важные из кото рых кратко описаны ниже. Читая описание, обращайтесь к рис. 13.1.
ГЛАВНОЕ МЕНЮ
Главное меню редактора Visual Basic работает аналогично главному меню любого приложения Windows. Оно содержит раскрывающиеся меню с командами, используе мыми при работе с различными компонентами редактора Visual Basic. Кроме главного меню, пользователю доступны многочисленные контекстные меню, активизируемые путем щелчка правой кнопкой мыши на различных компонентах.
ПАНЕЛИ ИНСТРУМЕНТОВ
В редакторе Visual Basic доступны шесть панелей инструментов, одна из кото рых — стандартная — по умолчанию расположена под главным меню. Панели инст рументов редактора Visual Basic работают так же, как и в Excel: их можно перемещать, выводить, скрывать и т.д.
358 |
Часть III. Использование VBA |
•J4il!m.U.liiyUIMI;iWH^3 |
OI.KIS - fModulei (Code)] |
|
|
|
|
|||||
mm tfSt ^^ew ipsoA |
fSfmA Siiebug |
BMft |
Btote udd-Ins a|ttde»4 |
b^S'^:' |
?^'-;S?> ' ^^**л«те вопрос |
:^i^;xd |
||||
О'Ш' |
|
|
|
|
|
= ^ (Declarations) |
•"g; |
|||
|
|
|Public |
ExconplellsRunning |
As |
Boolean |
|
|
|||
|
|
|
|
|
|
|||||
^ |
Animated Chart Екатр1е.х1$ (Picl. |
Public |
Exan»ple2IsRunning |
As |
Boolean |
|
|
|||
В " ^ |
Microsoft Excel Objects |
|
Public |
ExamplesIsRunning |
As |
Boolean |
|
|
||
|
|
|
|
|
|
|||||
|
, |
1Й Sheet2 (ЛИСТ1) |
|
Pi^lic Ext^^ |
|
|
|
|
||
I |
^•-Cl TNsWorkbook |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|||
e |
Ш |
Modules |
|
Sub |
RunExawplel0 |
Then |
|
|
||
|
|
|
|
|
If ExamplelIsRunning |
|
|
|||
|
|
|
|
|
|
ExamplelIsRunning |
- False |
|
|
|
|
|
|
|
|
End |
End |
|
|
|
|
|
|
|
|
|
If |
|
|
|
|
|
|
|
|
|
|
ExamplelIsRunning - True |
|
|
|
||
|
|
|
|
|
Do |
DoEvents |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ThisTJorkbook. Worksheets ("Example-1") .Range ("Base") - _ |
||||
|
|
|
|
|
|
ThisUorkbook.Worksheets("Example-1").Range("Base") |
||||
|
|
|
|
|
|
DoEvents |
|
|
|
|
iModulel |
Module |
|
|
Loop |
|
|
|
|
||
|
|
|
|
StopIt: |
|
|
|
|
|
|
А1рЬ«Ьейс |
|c^teeoH?edj |
|
End |
Svb |
|
|
|
|
|
|
|
|
|
|
Sub |
RunExample20 |
Then |
|
|
||
|
|
|
|
|
If Example2IsRunning |
|
|
|||
|
|
|
|
|
|
ExaMple2IsRunning |
« False |
|
|
|
|
|
|
|
|
End |
End |
|
|
|
|
|
|
|
|
|
If |
|
|
|
|
|
|
|
|
|
|
ExQmple2IsRunning = True |
|
|
|
||
|
|
|
Й*Л. |
Dim Multiplier As Object, Increment As Double, i As Double ^i |
||||||
|
|
|
|
|
|
|
|
•j' |
Puc. 13.1. Редактор Visual Basic
ОКНО ПРОЕКТОВ
В окне проектов выводится расширяемый список всех рабочих книг, открытых в данный момент в Excel (включая модули надстроек и скрытые рабочие книги). В ре дакторе Visual Basic каждая рабочая книга называется проектом (project). В следующем разделе окно проектов рассматривается более подробно. Если окно проектов невиди мо, нажмите клавиши <Ctrl+R>.
ОКНО КОДА
Это окно содержит код VBA. С каждым элементом проекта ассоциировано свое окно кода. Для активизации окна кода некоторого объекта дважды щелкните на объекте в окне проектов. Активизировать окно кода можно и так: щелкните на элементе правой кнопкой мыши и в контекстном меню выберите команду View Code (Просмотр кода).
Например, для активизации окна кода объекта Лист1, дважды щелкните на пункте Лист1 в окне проектов. Если вы пока что не добавили код VBA, то это окно пустое. Подробнее окна кодов рассматриваются далее в главе.
ОКНО СВОЙСТВ
Это окно содержит список всех свойств вьщеленного объекта, оно используется для просмотра и изменения свойств. Если окна свойств не видно, его можно вывести, нажав клавишу <F4>. На рис. 13.1 окно свойств выведено.
ОКНО ВЫПОЛНЕНИЯ
Окно выполнения (Immediate) используется для непосредственного выполнения операторов VBA, их тестирования и отладки кода. Если окно выполнения невидимо, нажмите клавиши <CtrH-G>. Чтобы скрыть окно выполнения, щелкните на кнопке закрытия в строке заголовка окна.
Глава 13. Введение в VBA |
359 |