Познавательное

Уроки Visual Basic: Диаграммы

  

Говорят, лучше один раз увидеть, чем сто раз услышать. Наглядное представление данных имеет неоспоримое преимущество перед сухими цифрами. Именно поэтому диаграммы являются неотъемлемой частью всех программ для работы с электронными таблицами, пройдя вместе с ними долгий эволюционный путь развития. В этой главе рассматривается использование VBA при выполнении следующих базовых задач:
■ создание встроенных диаграмм и диаграмм, расположенных на отдельном листе;
■ выбор типа диаграммы;
■ изменение типа диаграммы;
■ форматирование, перемещение и удаление диаграммы и ее элементов;
■ создание нестандартных диаграмм.
Одной из особенностей программирования диаграмм в Excel является наличие двух объектных моделей, каждая из которых соответствует различному типу диаграмм.

Встроенные диаграммы и диаграммы, расположенные на отдельном листе
Изначально все диаграммы создавались на отдельном листе. В середине 1990-х годов в Excel была добавлена возможность встраивать диаграмму в
существующий рабочий лист. Наличие двух различных типов диаграмм вызвало необходимость создания двух объектных моделей. Диаграмме, расположенной на отдельном листе, соответствует объект Chart, в то время как для работы со встроенной диаграммой следует использовать объект ChartObject.

Встроенные диаграммы и контейнер ChartObject

Объект ChartObject является своеобразным "контейнером" встроенной диаграммы. Его основное предназначение заключается в обеспечении способа
определения размера встроенной диаграммы и ее положения на рабочем листе. Эти параметры распространяются на все внедренные в диаграмму объекты,
такие как автофигуры и изображения. Откройте любой рабочий лист, содержащий встроенную диаграмму. Щелкните на диаграмме, удерживая нажатой клавишу или . По бокам и в углах области диаграммы появятся круглые маркеры управления размером белого цвета, как показано на рис. 10.1.

Уроки Visual Basic: Диаграммы

Рис. 10.1. Чтобы выделить контейнер ChartObject, щелкните на встроенной диаграмме, удерживая нажатой клавишу или . Имя контейнера диаграммы появится в поле Имя слева от поля ввода формулы

В поле Имя (Name Box) слева от поля ввода формулы появится имя контейнера встроенной диаграммы. Это имя используется для обращения к объекту
ChartObject, как показано ниже:
ActiveSheet.ChartObjects("Диаграмма 1").Select

Чтобы определить смещение контейнера встроенной диаграммы от верхней границы рабочего листа, выделите объект ChartObject и введите в окне Immediate (Быстрое выполнение) редактора Visual Basic строку Print Selection. Top. Отмените выделение контейнера диаграммы, после чего щелкните на незанятом пространстве между границей диаграммы и областью ее построения. По бокам и в углах области диаграммы появятся квадратные маркеры управления размером черного цвета (рис. 10.2), что свидетельствует о выделении области диаграммы.
Уроки Visual Basic: Диаграммы

Рис. 10.2. Чтобы выделить область диаграммы, щелкните на незанятом пространстве между границей диаграммы и областью ее построения. В поле Имя появится стандартное имя области всех диаграмм — Область диаграммы

Области всех диаграмм имеют стандартное имя Область диаграммы (Chart Area), которое выводится в поле Имя слева от поля ввода формулы. Ниже приведен код VBA, соответствующий выделению области диаграммы:
ActiveSheet.ChartObjects("Диаграмма 1").Activate
		ActiveChart.ChartArea.Select

Чтобы узнать смещение области диаграммы от верхней границы контейнера, выделите область диаграммы и введите в окне Immediate редактора Visual
Basic строку Print Selection. Top. Ниже приведен пример изменения цвета области диаграммы, встроенной в рабочий лист Excel:
Worksheets("ЛистЗ").ChartObjects("Диаграмма 2").Chart.ChartArea. _
		Interior.Colorlndex = 2


Диаграммы, расположенные на отдельном листе
При работе с диаграммами, расположенными на отдельном листе, применяется объектная модель, отличная от той, что применялась при работе со
встроенными диаграммами. В частности, объект диаграммы принадлежит не объекту контейнера, а объекту листа. Ниже приведен пример изменения цвета
области диаграммы, расположенной на отдельном листе:
Sheets("Диаграмма 2").ChartArea.Interior.ColorIndex = 2


Создание диаграмм с помощью VBA

Уроки Visual Basic: Диаграммы
Рис. 10.3. Чтобы создать диаграмму, выделите исходные данные и нажмите клавишу Наиболее простой способ создания диаграммы с помощью пользовательского интерфейса Excel заключается в выделении исходных данных и нажатии клавиши . Рассмотрим код, сгенерированный средством записи макросов при построении диаграммы на основе исходных данных, показанных на рис. 10.3. На рис. 10.4 показана диаграмма, созданная Excel в результате нажатия клавиши .
Уроки Visual Basic: Диаграммы

Рис. 10.4. В результате нажатия клавиши Excel создаст новую диаграмму, расположенную на отдельном листе

Ниже приведен код, сгенерированный средством записи макросов:
Charts.Add
				ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("Al:B5")
				ActiveChart.Location Where:=xlLocationAsNewSheet

Проанализируем первую строку кода:
Charts.Add

Коллекция Charts представляет собой коллекцию всех листов диаграмм в рабочей книге. Каждая коллекция имеет метод добаштсния нового элемента — Add. Таким образом, в результате выполнения строки Charts.Add в коллекцию Charts будет добавлен новый лист диаграммы (пока еще пустой). Добавив новый лист диаграммы, Excel автоматически делает его активным. Для обращения к текущей активной диаграмме можно использовать как объект Chart (например, Charts ("Диаграмма 1")), так и объект VBA ActiveChart.
Внимание
Если текущим активным объектом является объект, отличный от диаграммы, попытка использования объекта ActiveChart приведет к возникновению ошибки.

ActiveChart.SetSourceData Source:=Sheets("Лист4").Range("Al:B5")

Вторая строка автоматически сгенерированного кода определяет диапазон исходных данных для диаграммы с помощью метода SetSourceData. Следует отметить, что VBA содержит соответствующие методы для всех действий, которые можно выполнить посредством пользовательского интерфейса. Так, для того чтобы задать диапазон исходных данных диаграммы, необходимо щелкнуть на ней правой кнопкой мыши и выбрать команду контекстного меню Исходные данные (Source Data). На экране появится диалоговое окно Исходные данные (Source Data) (рис. 10.5), вкладка Диапазон данных (Data
Range) которого позволяет указать диапазон исходных данных. Ниже приведен полный синтаксис метода SetSourcedata: SetSourceData{Source, PlotBy)
Здесь Source— это ссылка на диапазон ячеек, a PlotBy— константа, принимающая значение xlColumns или xlRows. Ниже приведен пример вызова метода SetSourceData с указанием всех аргументов:
ActiveChart.SetSourceData Source:=Sheets("Лист4").Range("Al:B5"), _
				PlotBy:=xlColumns

Обратите внимание, что автоматически сгенерированный код не содержит аргумент PlotBy. Вероятно, средство записи макросов сочло возможным опустить
его, поскольку структура исходных данных (имена заголовков столбцов в ячейках А1 и В1) предполагает, что ряды данных расположены в столбцах. К сожалению, подобная эффективность является скорее исключением, чем правилом.
ActiveChart.Location Where:=xlLocationAsNewSheet

Уроки Visual Basic: Диаграммы

Рис. 10.5. Для определения исходных данных диаграммы можно воспользоваться диалоговым окном Исходные данные или методом VBA SetSourceData

Приведенная выше строка соответствует последнему шагу мастера создания диаграмм (рис. 10.6).
Уроки Visual Basic: Диаграммы

Рис. 10.6. Выбор размещения диаграммы

Ниже приведен полный синтаксис метода Location:
Location{Where, Name)

Константа Where может принимать значения xlLocationAsNewSheet, xlLocationAsNewObj ect и xlLocationAutomatic. Name — это строка, которая определяет:
■ имя нового листа, на котором будет размещена диаграмма (параметр Where принимает значение xlLocationAsNewSheet);
■ имя рабочего листа, на котором будет размещена встроенная диаграмма (параметр Where принимает значение xlLocationAsNewObj ect).
Как уже отмечалось, средство записи макросов генерирует много избыточного кода. Поскольку использование метода Charts .Add подразумевает, что новая диаграмма будет размещаться на отдельном листе, последняя строка сгенерированного кода является лишней и ее можно удалить.

Изменение размещения диаграммы

Метод Location позволяет изменить тип диаграммы, преобразовав ее из встроенной на размешенную на отдельном листе и наоборот. (Чтобы изменить
размещение диаграммы с помощью пользовательского интерфейса, щелкните на диаграмме правой кнопкой мыши и выберите команды контекстного меню
Размещение (Location).) Рассмотрим следующий код:
Worksheets("Лист1").ChartObjects("Диаграмма 1").Activate
				ActiveChart.Location Where:=xlLocationAsNewSheet,
				Name:="МояДиаграмма"

Его выполнение приведет к преобразованию диаграммы Диаграмма 1, встроенной в рабочий лист Лист1, в диаграмму, размещенную на отдельном листе МояДиаграмма.
 


Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.