【发布时间】:2016-03-13 05:31:19
【问题描述】:
我在每个工作表中都有数据透视表,我必须对它们进行比较,但是每个工作表中图例的颜色不同。 如何设置颜色?
例如,如果我的图例条目是“ISO”,我希望它始终是“蓝色”,如果它的“LAT”我希望它在每张纸上都是“红色”。
【问题讨论】:
标签: vba excel charts pivot-table
我在每个工作表中都有数据透视表,我必须对它们进行比较,但是每个工作表中图例的颜色不同。 如何设置颜色?
例如,如果我的图例条目是“ISO”,我希望它始终是“蓝色”,如果它的“LAT”我希望它在每张纸上都是“红色”。
【问题讨论】:
标签: vba excel charts pivot-table
这可以通过操作Chart 的SeriesCollection 属性中的Series 对象来完成。
我在下面编写了一个简短的示例方法,它采用工作表、图例名称和目标 RGB 颜色。它循环工作表的形状,如果它们包含图表,则查找具有指定legendName 的Series。如果合适,它会将前景色更改为指定的 RGB 颜色。
Private Sub FormatShapeLegend(sheet As Worksheet, legendName As String, targetColor As MsoRGBType)
Dim shp As Shape
Dim chrt As Chart
Dim s As Series
For Each shp In sheet.Shapes
If shp.HasChart Then
Set chrt = shp.Chart
'Loop the dataseries to find the legend with the desired name.
For Each s In chrt.SeriesCollection
'If the name fits, go ahead and format the series.
If LCase(s.Name) = LCase(legendName) Then
s.Format.Fill.ForeColor.RGB = targetColor
End If
Next
End If
Next
End Sub
示例用法:
FormatShapeLegend ActiveSheet, "ISO", RGB(0, 0, 255)
【讨论】: