我已经为Excel 2007程序创建了一个VBA,它可以根据活动工作簿中最多52个不同的选项卡自动为ROI创建条形图。我已经接近完成了,唯一我无法弄清楚的是如何改变条形图的颜色。
图表是在他们自己的子功能中创建的,通过这样的调用来调用。每当变量被调用时,每个变量都会发生变化。
Call AddChartObject(1, 1, "Example", extraWeeks, weekDifference)
它所调用的子类看起来像这样。
Sub AddChartObject(j As Integer, k As Integer, passedChartTitle As String, xtraWks As Integer, ttlWks As Integer)
Dim topOfChart As Integer
topOfChart = 25 + (350 * j)
'Adds bar chart for total sales
With ActiveSheet.ChartObjects.Add(Left:=375, Width:=475, Top:=topOfChart, Height:=325)
.Chart.SetSourceData Source:=Sheets("Consolidation").Range("$A$" & 3 + ((17 + xtraWks) _
* j) & ":$C$" & (4 + ttlWks) + ((17 + xtraWks) * k))
.Chart.ChartType = xl3DColumnClustered
.Chart.SetElement (msoElementDataLabelShow)
.Chart.HasTitle = True
.Chart.ChartTitle.Text = passedChartTitle & " Sales"
.Chart.SetElement (msoElementLegendBottom)
.Chart.SetElement (msoElementDataLabelNone)
.Chart.RightAngleAxes = True
End With
End Sub
根据市场营销的意愿,我想在条形图中的SECOND系列上使用的RGB颜色是(155,187,89)。我很确定我可以在我的.chart.????.???? = RGB (155, 187, 89)
中使用With
命令来设置它,但是我花了太多时间试图找出它,只是没有提出任何建议。 / p>
答案 0 :(得分:14)
你试过吗
.Chart.SeriesCollection([index]).Interior.Color = RGB(155, 187, 89)
(其中[index]是您想要更改颜色的系列的占位符)?
答案 1 :(得分:3)
它对我来说非常类似于ScottyStyles,但仅限于第一个系列。我在下面使用了相同的,并没有改变SeriesCollection(2)的颜色。那是一组线性数据。
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.ClearToMatchStyle
ActiveChart.SeriesCollection(1).Interior.Color = RGB(85, 142, 213)
ActiveChart.SeriesCollection(2).Interior.Color = RGB(192, 0, 0)
答案 2 :(得分:1)
要更改集合中的不同条形,可以使用:
ActiveChart.SeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = RGB(85, 142, 213)
ActiveChart.SeriesCollection(1).Points(2).Format.Fill.ForeColor.RGB = RGB(192,0, 0)
...