Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Diagrammy_v_Excel_Dzhon_Uokenbakh_2003

.pdf
Скачиваний:
27
Добавлен:
26.03.2016
Размер:
33.34 Mб
Скачать

Игральные кости нарисованы без использования графических средств. Кружоч­ ки выводятся и скрываются с помощью функций ЕСЛИ, определяющих, нужно ли выводить кружочек на основе случайно сгенерированного значения. Кружо­ чек выводится как символ шрифта Wingdings.

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

Заголовок диаграммы, выводящий количество бросков, связан с ячейкой L12 (она спрятана за диаграммой, чтобы не загромождать рабочий лист). В ячейке L12 количество бросков определяется с помощью формулы =МАКС(А:А), воз­ вращающей последний номер броска.

Создайте собственную аппликацию

Однажды я получил по почте пакет от еще не известной мне тогда Дебби Гьюэнд (Debbie Gewand). В пакете были короткая записка и дискета с рабочей книгой Excel. Записка меня заинтриговала и я открыл рабочую книгу. Я был поражен тем, что уви­ дел. Файл содержал сотни тщательно проработанных автофигур, образующих потря­ сающие картины!

Как оказалось, Дебби — художник. Она живет в Нью-Йорке. Графические средст­ ва Excel она использует как свой главный инструмент рисования. На рис. 12.16 пока­ зан простой пример одного из ее произведений. Бабочка составлена из 69 автофигур, отформатированных вручную!

ШдHiff liiiil'ffiiiiliiiiiiilH

111^^^Р^^''''/;^,л1ШЙ]

' \А.. *'j е 1 с i 0

i е 1 .г 1..4 1 "^^1

1 2

 

1 ^ пг

1 7

WjjKpi^^l^^,^

 

LJ~

 

110"

 

 

р™

 

 

р2

 

 

Пэ

 

 

114'

 

 

Глй

 

 

I'le

 

 

Ш"

 

 

ps

 

 

Пв

 

 

120

• MbsButternies / Дп^Ы/ J i U

•iiiii

i

Рис. 12.16. Изображение создано с помощью автофигур

Работы Дебби делятся на две категории: аппликации, составленные из автофигур, и копии фотографий, украшенные автофигурами. В последнем случае она вставляет отсканированный рисунок в рабочий лист, а затем добавляет автофигуры поверх изо­ бражения. Пример такой аппликации показан на рис. 12.17. Изображение девочки справа состоит из 120 автофигур.

350

Часть П. Построение диаграмм

|С|р|с12_16-18лЬ

Рис. 12.17. Аппликация из автофигур, созданная на основе фотографии

Создание сложного изображения занимает у нее 4—5 часов. Однако Дебби на­ столько мастерски владеет своим искусством, что может создать впечатляющее произ­ ведение менее чем за час. На рис. 12.18 показан еще один пример потрясающего мас­ терства Дебби. Ангел состоит приблизительно из 300 автофигур.

1

 

А 1 8 1 0 1 D ' l Y ^

Г [ ^

ГТ"ГТ"

 

^ • ^ ^ • ^ ^

1 1]

и

 

 

 

 

[ 6

 

 

 

 

1 ^

 

 

 

 

\^'~

 

 

 

 

 

 

ЕЕ

 

 

 

 

еж

 

 

 

гж

 

 

 

 

рпг

 

 

 

 

рпг

 

 

 

 

17

 

 

Г2Т

 

 

еж

 

 

 

ГЖ

 

 

 

 

j _

 

 

 

1 1

Г22

 

 

 

 

^^V^p^^'

^1 в^'^^^^^^^1

 

I T

 

 

^

'

 

\W

 

 

 

 

 

 

 

 

СЖ

 

> HJiG^erfell^XAna^^

 

ЩIJH ^

 

 

Рис. 12.18. Еще одно произведение искусства, созданное с помощью автофигур

Глава 12. Немного поразвлекаемся

351

'*Л #**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

Переменным VBA можно присваивать значения.

Представьте себе переменную как имя, обозначающее некий "ящичек", в котором можно хранить значение.

Для присвоения переменной Доход значения ячейки А1 рабочего листа Лист 1 ис­ пользуется следующий оператор VBA:

Доход = Worksheets("Лист1").Range("А1").Value

И наоборот: значение переменной можно присвоить ячейке.

Для присвоения ячейке А1 рабочего листа Лист1 значения переменной Доход ис­ пользуется следующий оператор:

Worksheets("Лист1").Range("А1").Value = Доход

Объекты имеют методы.

Метод — это некоторое действие, выполняемое над объектами. Например, один из методов объекта Range называется ClearContents. Его запуск приводит к очистке содержимого диапазона (clear contents — очистить содержимое).

Ссылка на метод состоит из имени объекта и имени метода, разделенных точкой.

Например, для очистки содержимого ячейки А1, находящейся в активном рабочем листе, используется оператор

Range("А1").ClearContents

VBA поддерживает все конструкции современных языков программирования — масси­ вы, циклы и т.д.

Приведенное выше резюме содержит практически все существенные аспекты VBA. Теперь осталось лишь ознакомиться с некоторыми подробностями.

Что может делать код VBA

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

Вставка текстовой строки или формулы. Если вы часто вводите в рабочий лист

имя компании, то можете переложить эту работу на простой макрос. Автоматизи­ ровать эту операцию можно также с помощью диалогового окна Автозамена, одна­ ко макросы — более гибкое и удобное средство.

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

Автоматизация однообразных операций. Допустим, нужно выполнить некоторую операцию над 20 различными диаграммами. Выполняя операцию в первый раз, вы можете включить запись макроса, тогда для изменения других диаграмм достаточ­ но будет лишь запустить макрос 19 раз.

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

Создание пользовательской кнопки на панели инструментов. Вы можете размес­ тить на любой из панелей инструментов Excel собственную кнопку, запускающую ваш макрос.

Создание упрощенного интерфейса для пользователей, не знакомых с Excel.

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

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

3 5 7

Разработка новых функций рабочих листов. В 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]