更改条形图中的条形图颜色

时间:2011-04-11 17:08:01

标签: excel vba graph colors bar-chart

我已经为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>

3 个答案:

答案 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)
...