|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2006 г.
Объекты Excel
Биллиг Владимир Арнольдович |
| Свойство | Описание |
|---|---|
ChartType | Позволяет прочесть или задать тип и формат стандартной диаграммы. Возможные значения задаются константами, которых около сотни. Напомним, что с каждым из 14 стандартных типов связано до 10 форматов. |
AutoScaling | Булево свойство, имеющее значение True, когда трехмерная диаграмма автоматически масштабируется так, чтобы совпадать по размеру с двумерной. Свойство RightAngleAxes должно также иметь значение True. |
BarShape | Мы ранее говорили, что двумерные гистограммы изображаются в виде прямоугольников. Для изображения трехмерных гистограмм обычно используются параллелепипеды, но можно применять и другие геометрические фигуры. Свойство BarShape задает вид используемой фигуры. Оно имеет следующие значения: xlBox, xlConeToMax, xlConeToPoint, xlCylinder, xlPyramidToMax, или xlPyramidToPoint. Использовать это свойство вряд ли стоит. Все эти фигуры- "изыски от лукавого". |
DepthPercent, HeightPercent | Свойства применимы только к трехмерным диаграммам. Позволяют установить глубину и высоту диаграммы в процентах относительно ее ширины. |
DisplayBlanksAs | Устанавливает способ интерпретации данных при встрече с пустой ячейкой. Следующие константы: xlNotPlotted, xlInterpolated, или xlZero задают три возможные стратегии- игнорировать ячейку, провести интерполяцию или считать нулем. |
Elevation, Rotation, Perspective, RightAngleAxes | Можно попытаться повысить наглядность изображения диаграммы. Свойство Elevation задает возвышение (в градусах) точки, с которой Вы смотрите на диаграмму. Rotation задает поворот вокруг оси Z, а Perspective - перспективу. Булево свойство RightAngleAxes задает "угол зрения". |
GapDepth | Задает в трехмерной диаграмме расстояние между рядами данных. Значение может быть в интервале от 0 до 500. |
HasAxis, HasDataTable, HasLegend, HasTitle | Булевы свойства, показывающие, какие элементы диаграммы присутствуют в ней. |
PlotBy | Имеет два значения: xlColumns и xlRows, указывающие столбцы или строки следует использовать как ряды данных. |
PlotVisibleOnly | Булево свойство, имеющее значение True, если отображаются только данные из видимых ячеек. В противном случае диаграмма отображает все данные, включая скрытые ячейки. |
ProtectContents, ProtectData, ProtectDrawingObjects, ProtectFormatting, ProtectGoalSeek, ProtectionMode, ProtectSelection | Булевы свойства, позволяющие установить защиту соответствующих элементов диаграммы. Часть из них имеет статус "только для чтения". |
ShowWindow | Булево свойство, применяемое только к встроенным диаграммам. Имеет значение True, если диаграмма отображается в отдельном окне. |
Visible | Напомним, имеет три значения: True, False и xlVeryHidden. |
Мы не будем рассматривать методы, которые так или иначе уже встречались. Рассмотрим только основные методы, определяющие новое поведение объекта 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 SubSub 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
Дадим некоторые комментарии к этой программе:
myRange и myChart класса ChartObjects. Это позволило задать нужные размеры и положение диаграммы, привязанное к таблице данных.ChartWizard и работу с коллекциями SEriesCollection. Теперь продемонстрирован еще один способ, когда задаются свойства и методы объекта Chart, в частности, для указания источника данных используется метод SetSourceData.ChartType позволяет указать тип диаграммы, а метод Location определяет ее, как встроенный объект.RightAngleAxes.В отличие от объекта Worksheet, все события которого могут быть обработаны на верхнем уровне, объект Chart имеет специфические события, сообщения о которых направляются только ему одному. Встроенные диаграммы и листы диаграмм, имеют одни и те же события. Разница состоит в том, что события встроенных диаграмм по умолчанию выключены, поэтому необходимо потрудиться, чтобы стало возможным их подключение и написание обработчиков событий. Рассмотрим список событий, связанных с объектом Chart:
| Событие | Появляется, когда пользователь или программа |
|---|---|
Activate | Активизировал лист диаграмм. Естественно, его нет у встроенных диаграмм. |
BeforeDoubleClick | Дважды щелкает кнопкой мыши на диаграмме |
BeforeRightClick | Щелкает правой кнопкой мыши на диаграмме |
Calculate | Добавил или изменил данные на диаграмме. |
Deactivate | Активизировал новый лист и тем самым деактивировал старый. |
DragOver | Перетащил данные, расположив их поверх диаграммы. |
DragPlot | Перетащил диапазон ячеек, расположив их поверх диаграммы. |
MouseDown | Нажал кнопку мыши при позиционировании ее над диаграммой. |
MouseMove | Передвигает указатель мыши по диаграмме. |
MouseUp | Закончил перемещение мыши и освободил кнопку. |
Resize | Изменил размер диаграммы. |
Select | Выделил некоторый элемент диаграммы |
SeriesChange | Изменил значение точки ряда данных. |
Обработчики событий для объектов Workbook, Worksheet и объектов Chart, задающих листы диаграмм, построить нетрудно. Все эти события по умолчанию включены, поэтому для построения обработчика достаточно перейти в окно проектов, выбрать модуль, обрабатывающий события этого объекта, в окне объектов этого модуля выбрать нужный объект, а затем в окне событий и процедур выбрать из списка имя события. В результате этих действий появится заготовка, содержащая заголовок обработчика события, после чего останется написать код обработчика. Более сложно строятся обработчики событий для объектов Chart, задающих встроенные диаграммы. О том как создаются обработчики событий для тех объектов, у которых события по умолчанию выключены, я подробно рассказал при рассмотрении событий объекта Application. Остается только коротко напомнить схему действий:
Chart с событиями (With Events)Chart с событиями появляется в окне созданного класса, то к нему применяется обычная схема создания обработчиков событий.Возможно, следует обратиться к началу главы, где все подробно описано на примере работы с объектом Application.
|
CITForum © 1997–2025