Изменение цвета гистограммы на гистограмме - PullRequest
7 голосов
/ 11 апреля 2011

Я создал программу VBA для Excel 2007, которая автоматически создает гистограммы для ROI на основе до 52 различных вкладок в активной книге.Я близок к тому, чтобы сделать, и only вещь, которую я не могу понять, это как изменить цвета гистограмм.

Графики создаются в своей собственной подфункции, вызываемой с помощью вызовавот так.Каждая переменная изменяется при каждом вызове.

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

Цвет RGB, который я хочу использовать в серии ВТОРОЙ на гистограммеэто (155, 187, 89), в соответствии с пожеланиями маркетинга.Я почти уверен, что есть команда .chart.????.???? = RGB (155, 187, 89), которую я могу использовать в своем With, чтобы установить это, но я потратил слишком много времени, пытаясь выяснить это, только чтобы ничего не придумать.

Ответы [ 2 ]

14 голосов
/ 11 апреля 2011

Вы пробовали

.Chart.SeriesCollection([index]).Interior.Color = RGB(155, 187, 89)

(где [index] - заполнитель для серии, для которой вы хотите изменить цвет)?

4 голосов
/ 21 июня 2013

У меня работает 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)
...