在柱形图中替换两种颜色,具有值的独立性

时间:2014-09-20 07:44:26

标签: excel excel-vba vba

我有一个柱/条形图,我想用这种方式将它变成红色和灰色:第一列红色,第二个灰色,第三个红色,第四个灰色,依此类推,直到没有更多值。我正在努力使用宏录制器,因为它指定了每个点,但想法是数据将被更新,并将根据情况将点/值的数量更改为更少或更多。

1 个答案:

答案 0 :(得分:1)

您需要编写一个循环遍历图表中系列/点数的代码。下面的代码循环显示选定的图表中的每个系列和/或点,并使用相同的填充颜色格式化每一个条形码。

Sub ColorBarsInChart()
    Dim i As Integer
    Dim j As Integer

    'Exit if no chart is selected
    If Not (TypeName(Selection) = "ChartArea" Or TypeName(Selection) = "PlotArea") Then Exit Sub

    'If only one series in chart
    If ActiveChart.SeriesCollection.Count = 1 Then
        For j = 1 To ActiveChart.SeriesCollection(1).Points.Count
            If j Mod 2 Then
                ActiveChart.SeriesCollection(1).Points(j).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
            Else
                ActiveChart.SeriesCollection(1).Points(j).Format.Fill.ForeColor.RGB = RGB(127, 127, 127)
            End If
        Next j

    'If more than one series in chart
    Else
        For i = 1 To ActiveChart.SeriesCollection.Count
            For j = 1 To ActiveChart.SeriesCollection(i).Points.Count
                If i Mod 2 Then
                    ActiveChart.SeriesCollection(i).Points(j).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
                Else
                    ActiveChart.SeriesCollection(i).Points(j).Format.Fill.ForeColor.RGB = RGB(127, 127, 127)
                End If
            Next j
        Next i
    End If
End Sub

由于我不知道您的特定图表是否包含多个数据系列,因此我已经使代码具有足够的通用性,可以在两种情况下工作。