Мир объектов Excel 2000


Методы объекта Chart


Мы не будем рассматривать методы, которые так или иначе уже встречались. Рассмотрим только основные методы, определяющие новое поведение объекта Chart:

  • Sub ChartWizard([Source], [Gallery], [Format], [PlotBy], [CategoryLabels], [SeriesLabels], [HasLegend], [Title], [CategoryTitle], [ValueTitle], [ExtraTitle]) Этот метод позволяет построить или модифицировать существующую диаграмму. В отличие от мастера диаграмм (ChartWizard), который вызывается при построении диаграммы вручную, метод не является интерактивным, более того он не позволяет задать все возможные свойства. С его помощью можно выполнить основную работу, а детали строятся с использованием других свойств и методов объекта Chart. В одном из ранее приведенных примеров (процедуре AddChart) я демонстрировал применение этого метода для программного построения диаграммы. Дадим краткое описание параметров метода, все из которых являются необязательными:
  • Source - объект Range, содержащий исходные данные для построения новой диаграммы. Если параметр опущен, то метод позволяет отредактировать существующую диаграмму - либо выделенную диаграмму рабочего листа, либо диаграмму активного листа диаграмм.
  • Gallery - задает тип диаграммы и может быть одной из следующих констант: xlArea, xlBar, xlColumn, xlLine, xlPie, xlRadar, xlXYScatter, xlCombination, xl3DArea, xl3DBar, xl3DColumn, xl3DLine, xl3DPie, xl3DSurface, xlDoughnut, или xlDefaultAutoFormat.
  • Format - задает формат для данного типа диаграммы. Каждому типу диаграммы соответствует некоторое число возможных форматов. Параметр задает номер формата, по умолчанию выбирается первый формат данного типа.
  • PlotBy - соответствует терминальному свойству PlotBy.
  • CategoryLabels и SeriesLabels - целые, указывающие число строк или столбцов с метками категорий и рядов данных в области, заданной параметром Source. Указывать эти числа нужно на единицу меньше фактического значения.
  • Остальные параметры позволяют добавить легенду, задать название диаграммы и ее осей - они совпадают с соответствующими терминальными свойствами.
  • Sub SetSourceData(Source As Range, [PlotBy]) Устанавливает источник данных диаграммы. Второй параметр соответствует терминальному свойству PlotBy.
  • Sub ApplyCustomType(ChartType As XlChartType, [TypeName]) Метод позволяет модифицировать диаграмму, применив к ней новый тип - стандартный или настраиваемый. Если этот тип стандартный, то тогда первый параметр полностью его определяет. Его возможные значения совпадают со значениями соответствующего терминального свойства ChartType. Если же тип настраиваемый, то первый параметр должен иметь одно из следующих значений: xlBuiltIn, xlUserDefined или xlAnyGallery. В этом случае второй параметр задает имя типа диаграммы.
  • Function Export(Filename As String, [FilterName], [Interactive]) As Boolean Позволяет экспортировать диаграмму, преобразуя ее в графический формат. Первый параметр задает имя файла, в который будет записана диаграмма в графическом формате, второй - задает имя графического фильтра в том виде, как оно записано в системном регистре. Булев параметр Interactive должен иметь значение True, если мы хотим вызвать диалоговое окно в процессе фильтрации. Функция Export возвращает значение True в случае успешного завершения работы.
  • Sub GetChartElement(X As Long, Y As Long, ElementID As Long, Arg1 As Long, Arg2 As Long). Представьте себе, что пользователь щелкнул кнопку мыши где-то над диаграммой. Обработав это событие, можно получить координаты курсора мыши - X и Y. Если теперь вызвать метод GetChartElement с этими координатами, то он вернет значение параметра ElementID - идентификатор элемента диаграммы и значения двух параметров, связанных с этим элементом. Конечно, параметры зависят от типа того элемента, чьи координаты X и Y заданы.
  • Function Location(Where As XlChartLocation, [Name]) As Chart. Передвигает диаграмму в новое местоположение. Параметр Where имеет следующие значения: xlLocationAsNewSheet, xlLocationAsObject, или xlLocationAutomatic.


    В первом случае диаграмма помещается на новый лист диаграммы и параметр Name задает имя этого листа. Во втором случае диаграмма помещается как встроенный объект и Name задает имя рабочего листа. Вот пример, в котором диаграмму, построенную на рабочем листе книги "BookOne" мы переносим на отдельный лист диаграмм:

    Public Sub MoveChart() Workbooks("BookOne").Worksheets("Sheet1").ChartObjects(4) _ .Chart.Location Where:=xlLocationAsNewSheet, Name:="Динамика продаж" End Sub
  • Sub SetSourceData(Source As Range, [PlotBy]) Позволяет установить новый источник данных. Параметры в пояснениях не нуждаются.


  • В заключение приведем процедуру, создающую трехмерную диаграмму по данным нашего примера с дилерами и продажами:

    Public Sub Chart3D() Workbooks("BookFour").Activate With Worksheets("Лист3") Dim myRange As Range Set myRange = .Range("C23:F27") Dim myChart As ChartObject 'Создаем контейнер объекта Chart Set myChart = .ChartObjects.Add(myRange.Left - 100, _ myRange.Top + myRange.Height, 400, 300) End With 'Определяем параметры объекта Chart With myChart.Chart .ChartType = xl3DColumn .SetSourceData Source:=myRange, PlotBy:=xlRows .Location Where:=xlLocationAsObject, Name:="Лист3" End With With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Динамика продаж" End With 'Диалог с пользователем If MsgBox("Хотите изменить угол зрения?", vbYesNo) = vbYes Then ActiveChart.RightAngleAxes = True End If End Sub

    Дадим некоторые комментарии к этой программе:

    • В качестве источника данных выступает известная по предыдущим примерам таблица Excel.
    • Я ввел объекты myRange и myChart класса ChartObjects. Это позволило задать нужные размеры и положение диаграммы, привязанное к таблице данных.
    • Ранее при построении диаграмм я использовал метод ChartWizard и работу с коллекциями SEriesCollection. Теперь продемонстрирован еще один способ, когда задаются свойства и методы объекта Chart, в частности, для указания источника данных используется метод SetSourceData.
    • Свойство ChartType позволяет указать тип диаграммы, а метод Location определяет ее, как встроенный объект.
    • В диалоге с пользователем изменяется угол зрения, задаваемый булевым свойством RightAngleAxes.
    • Задав еще заголовок диаграммы, и приняв остальные свойства диаграммы по умолчанию, я получил диаграмму, представленную на рис.3.14.



    Содержание раздела