我有一个工作簿而不是生成图表,具体取决于所选的工作表,这是数据的来源 . 其中两个系列是直线,其中两个系列是条形图,其中一个系列的值高于和低于一个系列 .
我希望条形图正值的颜色为绿色,负值为红色 . 无论我尝试了多少变化,当生成图表时,它们默认为标准颜色(烧焦的橙色和浅蓝色 . )
生成图表后,如果我直接编辑系列属性,我将填充颜色更改为红色和绿色没有问题 .
我的代码:
ActiveSheet.Shapes.AddChart.Select
Application.ActiveChart.Parent.Name = "Chart1"
ActiveSheet.ChartObjects("Chart1").Activate
ActiveChart.PlotVisibleOnly = False
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = ValueMin - 0.1
ActiveChart.Axes(xlValue).MaximumScale = ValueMax + 0.1
ActiveChart.SeriesCollection(1).Select 'Negative Series
ActiveChart.SeriesCollection(1).ChartType = xlColumnClustered
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0) 'Red
.Transparency = 0
.Solid
End With
ActiveChart.SeriesCollection(2).Select 'Positive Series
ActiveChart.SeriesCollection(2).ChartType = xlColumnClustered
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 176, 80) 'Green
.Transparency = 0
.Solid
End With
ActiveChart.SeriesCollection("3").Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0) 'Yellow
.Transparency = 0
End With
ActiveChart.SeriesCollection(4).Select 'Signal
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 51, 204) 'Pink
.Transparency = 0
End With
有关如何击败默认颜色并使用所选颜色的任何想法?谢谢 .
2 回答
我写这段代码有点懒 . 因此为您提供伪代码(未经测试) . 您可以自行决定测试和使用它...在生成图表后立即运行此代码 . 用户不会注意到后端的更改 - 如果您在开始时禁用屏幕更新并在结束时启用它 . 我没有看到您的图表生成代码 . 所以我根据你的问题写了一代又一代 .
UPDATE
根据OP的评论更新:
Changing Excel workbook's colour theme and How to change the default colors that Excel uses for chart series.
有时最困难的解决方案是最平凡的 .
线条
应切换到:
这样Format.Fill就可以作用于SeriesCollection属性,而不是ChartType属性 . 卫生署!
现在就像一个魅力 .