首先介绍对图表局部进行修改。修改局部图形元素的属性,首先需要获取到对应的图形元素。本节介绍怎样获取到图表中的点、线、面和文本等基本图形元素。[大谦Excel,dqexcel点com]
获取图表中的序列
对于图3-2中生成的复合柱状图,每个省市对应一个复合柱面,称为分组,每个分组中有六个不同颜色的单一柱面,所有省市相同颜色的单一柱面一起组成一个序列。所以,图中一共有六个序列,六个分组。可以选择序列,然后对该序列进行属性设置。
每个Chart对象都有一个SeriesCollection属性,它返回一个包含图表中所有序列的集合,对该集合进行索引,可以获取指定序列。用Series对象表示序列。
下面用Shapes对象绘制图表,修改第一个序列柱面和边线的颜色,修改分组之间的间隔和分组内部各柱面之间的间隔。完整代码见:Samples->ch04 美化Excel图表->01 获取和修改序列属性2->py.py。
Sub CreateChart()
Dim cht As Chart
ActiveSheet.Range("A2:C8").Select
Set cht = ActiveSheet.Shapes.AddChart2(-1, _
xlColumnClustered, 200, 20, 350, 250, True).Chart
cht.ChartGroups(1).GapWidth = 100 ‘分组之间的距离
cht.ChartGroups(1).Overlap = -15 ‘分组内部柱面之间的距离
SetStyle cht, 0, 0.28
End Sub
运行代码后生成的图表如图1-1中所示。第一个序列的颜色从兰色改成了绿色,边线改成了兰色。分组之间的间隔设置为100%柱面宽度,分组内部各柱面之间的间隔设置为-15,表示间隔15%柱面宽度,如果该值为正,分组内相邻柱面会出现重叠。
图1-1 修改图表中第1个序列的属性
获取序列中的单个点
序列表示复合柱状图中颜色相同的一组柱面,如果对这组柱面中的某个或某几个柱面感兴趣,需要单独设置它们的属性,就要用到序列中的点这个概念。注意,这里说的点不是几何意义上的点,而是数据点,可以用不同图形元素如点标记、柱面、扇面等表示数据点。
使用Series对象的Points属性,可以获取序列中的全部数据点。通过索引,可以把其中的某个或某些点提取出来进行设置。单个的点用Point对象表示,利用该对象的属性和方法,可以对指定的点进行设置。点的设置主要用于折线图、柱状图、条形图、面积图和饼图等。
下面的代码获取图表指定序列中数据点的个数。
num = cht.SeriesCollection(1).Points.Count
下面创建图表,修改第一个序列中第二个柱面的颜色为绿色。完整代码见:Samples->ch04 美化Excel图表->02 获取和修改序列中点的属性->py.py。
Sub CreateChart2()
Dim cht As Chart
ActiveSheet.Range("A2:C8").Select
Set cht = ActiveSheet.Shapes.AddChart2(-1, _
xlColumnClustered, 200, 20, 350, 250, True).Chart
‘序列1中第2个数据点点标记内部填充的前景色
cht.SeriesCollection(1).Points(2).Format.Fill.ForeColor.RGB = RGB(76, 200, 132)
‘序列1中第2个数据点点标记边线的前景色
cht.SeriesCollection(1).Points(2).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
cht.ChartGroups(1).GapWidth = 100 ‘分组之间的距离
cht.ChartGroups(1).Overlap = -15 ‘分组内部柱面之间的距离
SetStyle cht, 0, 0.28
End Sub
设置效果如图1-2所示。设置以后,序列中第3个点进行了突出显示。
图1-2 设置第1个序列中第2个点的属性