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

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

561

Деактивизация диаграммы

В предыдущем разделе был использован метод A c tiv a te для активизации диаграм­ мы. Теперь же ее нужно деактивизировать, т.е. отменить выделение. Как же это сделать? В соответствии с рекомендациями справочной системы, для этого следует воспользо­ ваться методом D e se le c t.

A c tiv e C h a rt.D e s e le c t

Однако этот оператор не работает, по крайней мере в данной версии Excel.

Поэтому единственный способ деактивизации диаграммы с помощью макроса — вы­ брать объект, отличающийся от диаграммы. В случае с внедренной диаграммой можно воспользоваться свойством Range Se l e c t i o n объекта A c tiv e Window для деактиви­ зации диаграммы и выбора диапазона данных, который был выделен до активизации диаграммы.

ActiveW indow. R a n g e S e le c tio n . S e le c t

Для деактивизации диаграммы, находящейся на листе диаграммы, просто напишите код VBA, который выбирает другой рабочий лист.

Определение активности диаграммы

Обычно макрос выполняет операции по отношению к активной диаграмме (выделенной пользователем). Например, макрос может изменять тип диаграммы, приме­ нять стиль или экспортировать диаграмму в графический файл.

Возникает вопрос: каким образом код VBA определяет, что пользователь выделил диаграмму? Под выделением диаграммы подразумевается активизация листа диаграммы либо щелчок мышью в области внедренной диаграммы. Первым этапом является про­ верка свойства TypeName для объекта S e le c tio n с помощью следующего оператора:

TypeName(Selection) = "C h a rt"

Фактически это выражение никогда не будет равным True. Если диаграмма активи­ зирована, то фактически выделяется объект в составе объекта C hart. Например, выде­ ление может представлять объект S e rie s , объект C h a rtT itle , объект Legend, объект PlotArea и т.д.

Решение этой задачи заключается в том, чтобы определить, будет ли значение свойства ActiveChart равно N othing. Если ответ на этот вопрос положителен, значит, диаграмма не является активной. В этом случае на экране отображается соответствующее сообщение, послечего процедура завершает свою работу. Код этой процедуры приведен ниже.

If A c tiv e C h a rt Is N o th in g Then MsgBox "Выберите диаграмму." E x it Sub

Else

1 здесь находится другой код End I f

Иногда для определения активности диаграммы удобнее воспользоваться функцией VBA. Функция C hart IsS e le c te d , код которой приведен ниже, возвращает значение True, если листдиаграммы активен, и значение F alse, если диаграмма не активизирована.

Private F u n c tio n C h a rtls S e le c te d () As

Boolean

C h a rtls S e le c te d = Not A c tiv e C h a rt

Is N o th in g

End F u n ctio n

 

564

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

Апр Май

Продукт D

Мар

Апр

Мер

Апр

Рис. 18.5. С помощью простого макроса к четырем диаграммам было применено подходя­ щее форматирование

Следующий макрос выполняет те же самые операции, что и процедура F orm atA ll- C harts, но обрабатывает все листы диаграмм в активной рабочей книге.

Sub

F orm atA H C h arts2 ()

 

 

 

Dim

c h t

as C ha rt

 

 

 

 

 

For

Each

c h t In A ctive W o rkb o o k . C ha rts

 

W ith

c h t

 

 

 

 

 

 

.C hartT ype

=

x lL in e M a rk e rs

 

 

 

 

.A p p lyL a yo u t

3

 

 

 

 

.C h a rtS ty le

=

12

 

 

 

 

. C le a rT o M a tch S tyle

 

 

 

 

. S etE lem ent

m soE le m e n tC ha rtT itle A b ove C h a rt

 

 

.S etE lem ent

msoElementLegendNone

 

 

. S etE lem ent

m soE le m e n tP rim a ryV alu eA xisT itleN o ne

 

 

. S etE lem ent

m soE le m e n tP rim a ryC a te g o ryA xisT itle N o n e

 

 

.A x e s (x lV a lu e ) . M inimumScale

=

0

 

 

.A x e s (x lV a lu e ) . MaximumScale

=

1000

 

End W ith

 

 

 

 

 

N ext

c h t

 

 

 

 

 

End

Sub

 

 

 

 

 

 

Изменение размеров и выравнивание диаграмм

Объект ChartOb j e c t имеет стандартные свойства, позволяющие изменять позицию (Тор и L ef t) и размеры (Width и H eigh t) диаграммы. Доступ к этим свойствам мож­ но получить с помощью кода VBA. На ленте Excel также находятся элементы управления (в группе Работа с диаграммами^Формат^Размер (Chart Tools^Format^Size)), одна­ ко они позволяют установить лишь свойства H eight и Width, но никак не Тор*и L eft.

В следующем примере изменяются размеры всех объектов ChartOb j e c t на листе, в результате чего достигается соответствие с размерами активной диаграммы. Этот код также перераспределяет объекты ChartOb j e c t по столбцам, определенным пользователем.