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

590 Часть V. Профессиональные методы программирования

К о м п а к т-д и ск

На прилагаемом к книге компакт-диске находятся примеры для встроенной

диаграммы

( m o u s e o v e r

e v e n t - e m b e d d e d . x l s m ) и для листа диаграммы

( m o u s e o v e r

e v e n t - c h a r t

s h e e t . x l s m ) .

Анимирование диаграмм

Программа Excel отображает простую анимацию (хотя многие пользователи не знают об этой возможности). Например, можно анимировать фигуры и графики. Рассмотрим график, показанный на рис. 18.21.

 

| А | П

С

1 D

Е

FG Н Ii|К'L!М

1

3,96

 

 

 

 

2

 

 

 

 

 

31— 5,

v

4

|

0|

0

5

I

3,96

-0,7

6

 

7,91

1

7

 

11,9

-0,6

8

 

15,8

-ОД

9

 

19,8

0,8

10

 

23,7

-1

1 11 27,7

0,56

12;

31,6

0,22

13 i

35,6

-0,9

1439,6 0,96

1543,5 -0,5

1б1

47,5

-0,3

17

51,4

0,91

18

55,4

-0,9

19

59,3

0,36

20 ]

63,3

0,43

2 ! j

67,2

-1

Рис. 18.21. С помощью простой процедуры VBA на основе этого графика можно создать ин­ тересную анимационную картинку

Значения аргумента X (столбец А) зависят от значения, которое хранится в ячейке А1. Значение в каждой строке равно сумме значения в предыдущей строке и значения

вячейке А1. Столбец В содержит формулы, которые подсчитывают значение функции SIN для соответствующего значения в столбце А. Представленная далее простая проце­ дура создает интересную анимационную последовательность. Она изменяет значение

вячейке А1, что приводит к изменению диапазона значений X и Y.

Sub

A n im a te C h a r t()

 

Dim i

As Long

 

R a n g e (" A l" ) = 0

 

F o r i

= 1 To 15 0

 

D oE vents

 

R a n g e (" A l" ) = R a n g e (" A l" ) + 0 .0 3 5

 

D oE vents

 

N e x t

i

 

R a n g e (" A l" ) = 0

End

Sub

 

Глава 18. Управление диаграммами

591

Ключевым в процессе анимирования диаграмм является использование одной или более инструкций D o E v e n ts . Эта инструкция передает контроль операционной системе, которая вызывает обновление диаграммы всякий раз, когда контроль передается обратно Excel. Если бы эти инструкции не применялись, изменения в диаграмме не отображались бы в цикле.

К о м п а к т-д и ск

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

a n im a te d c h a r ts .x ls m .

Прокрутка диаграммы

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

Н ачал ьны й Д ень — имя ячейки F1;

К о л и ч е с т в о Д н е й — имя ячейки F2;

П ри ращ ение — имя ячейки F3 (применяется для автоматической прокрутки);

Д а т а — именованная формула:

=СМЕЩ(Лист1!$А$1, НачальныйДень,0, КоличествоДней,1)

П р о д у к т _ А — именованная формула:

=СМЕЩ(Лист1!$В$1, НачальныйДень,0, КоличествоДней,1)

П р о д у к т _ Б — именованная формула:

=СМЕЩ(Лист1!$С$1, НачальныйДень,0, КоличествоДней,1)

Каждая из функций РЯД (SERIES) в диаграмме использует имена для значений кате­ горий и данных. Ниже приведена функция РЯД для ряда данных Продукт_А (для луч­ шего понимания было удалено имя листа и книги).

=РЯД($В$1, Дата,Продукт_А,1)

А вот функция РЯД для ряда данных Продукт_Б: =РЯД($С$1, Дата,Продукт_Б,2)

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

К о м п а к т-д и ск

На прилагаемом компакт-диске находится рабочая книга, в которой содержится рассматриваемый в этом разделе пример, а также ряд других примеров аними­ рованных диаграмм. Файл примера называется s c r o llin g c h a r t . xlsm .

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

P ublic

A n im a tio n ln P ro g re s s

As

B o o le an

Sub A n im a te C h a rt()

 

 

Dim

S t a r t V a l As Long, r

As

Long

I f

A n im a tio n ln P ro g re s s

Then

 

600

 

 

 

 

Часть V. Профессиональные методы программирования

Sub

L is tS p a r k lin e G r o u p s ()

 

Dim

sg

As

S p a rk lin e G ro u p

 

Dim

i

As

Long

 

F o r

i

= 1

To

C e lls .S p a r k lin e G r o u p s . Count

 

S e t

sg

=

C e l l s . S p a r k lin e G r o u p s (i)

 

MsgBox

s g .L o c a tio n .A d d re s s

 

N e x t

i

 

 

 

End

Sub

 

 

 

 

По ряду причин не следует использовать конструкцию For Each для обхода объектов в коллекции S parkl ineG roups. Для ссылки на объекты воспользуйтесь номерами индексов.

Ниже приводится еще один пример кода, демонстрирующий работу со спарклайнами в VBA. Процедура S p a rk l in e R e p o rt выводит сведения о каждом объекте спарклайна, находящемся на активном рабочем листе.

Sub

S p a r k lin e R e p o r t()

 

 

 

Dim

sg

As

S p a rk lin e G ro u p

 

 

 

Dim

s i

As

S p a r k lin e

 

 

 

Dim

SGType

As

S t r in g

 

 

 

Dim

SLS heet

As

W orksh eet

 

 

 

Dim

i As

Long,

j As Long, r

As

Long

 

I f

C e l l s . S p a rk lin e G ro u p s . Count

= 0 Then

 

 

MsgBox

"На

активном ли сте

спарклайны о тс у тс тв у ю т ."

 

 

E x it

Sub

 

 

 

 

 

End

I f

 

 

 

 

 

 

 

S e t

S LS heet

=

A c tiv e s h e e t

 

 

'

В ставка

нового

р аб очего л и ста

о тч е та

Wo rk s h e e ts .A d d

'Загол овки

 

W ith

R a n g e (" A l" )

 

 

 

 

 

 

 

.V a lu e

=

"О тчет о

сп а р кл а й н е :

" & SLS heet.N am e & " в " _

 

 

 

& S L S h e e t. P a r e n t . Name

 

 

 

 

. F o n t . B o ld = T ru e

 

 

 

 

 

 

.F o n t .S iz e = 16

 

 

 

 

 

 

End

W ith

 

 

 

 

 

 

 

 

 

W ith

R a n g e ( "A 3 :F 3 ")

 

 

 

 

 

 

.V a lu e

= A r r a y ( "Группа

# " ,

"Диапазон

группы _

 

 

 

сп ар кл айн ов ",

"# в

гр у п п е ",

"Т и п ",

_

 

 

 

" S p a r k lin e

# " ,

"Исходный

д иапазо н ")

 

. F o n t . B o ld = T ru e

 

 

 

 

 

 

End

W ith

 

 

 

 

 

 

 

 

 

r =

4

 

 

 

 

 

 

 

 

 

1

Обход

каждой

группы

спарклайнов

 

 

 

F o r

i

= 1

То

S L S h e e t. C e l l s . S p a rk lin e G ro u p s . Count

 

S e t

sg

=

S L S h e e t. C e l l s . S p a r k lin e G r o u p s (i)

 

S e le c t

Case s g .T y p e

 

 

 

 

 

 

 

Case 1: SGType = "График"

 

 

 

 

 

Case 2: SGType = "Столбец"

 

 

 

 

 

Case 3: SGType = "Выигрыш/проигрыш"

 

End

S e le c t

 

 

 

 

 

~

1

Обход

каж дого

спарклайна в

группе

 

 

F o r

j

= 1

То

s g . Count

 

 

 

 

 

 

 

S e t s i = s g . It e m ( j )