更改饼图颜色

更改饼图颜色

有人能举个例子说明如何更改饼图的颜色吗?(实际的饼图部分)。这些部分被称为点?我想使用 RGB 为每个部分选择一种颜色。谢谢!

答案1

来源

Sub ColorPieCharts()    
    Dim iX As Integer
    Dim iY As Integer
    Dim bHasDataLabels As Boolean
    Dim bShowSeriesName As Boolean
    Dim bShowCategoryName As Boolean
    Dim bShowValue As Boolean
    Dim bShowPercentage As Boolean
    Dim bLegendKey As Boolean
    Dim bHasLeaderLines As Boolean

    SetWorkbookColors

    For iX = 1 To ActiveSheet.ChartObjects.Count
        ActiveSheet.ChartObjects(iX).Select

        'Determine DataLabel status
        On Error Resume Next
        bHasDataLabels = ActiveChart.SeriesCollection(1).HasDataLabels
        'bLegendKey = ActiveChart.SeriesCollection(1).LegendKey
        bHasLeaderLines = ActiveChart.SeriesCollection(1).HasLeaderLines
        bShowSeriesName = ActiveChart.SeriesCollection(1).DataLabels.ShowSeriesName
        bShowCategoryName = ActiveChart.SeriesCollection(1).DataLabels.ShowCategoryName
        bShowValue = ActiveChart.SeriesCollection(1).DataLabels.ShowValue
        bShowPercentage = ActiveChart.SeriesCollection(1).DataLabels.ShowPercentage
        On Error GoTo 0

        ActiveChart.ApplyDataLabels AutoText:=True, _
            HasLeaderLines:=True, ShowSeriesName:=False, ShowCategoryName:=True, _
            ShowValue:=False, ShowPercentage:=False, ShowBubbleSize:=False

        For iY = 1 To ActiveChart.SeriesCollection(1).Points.Count
            Select Case ActiveChart.SeriesCollection(1).Points(iY).DataLabel.Text
            Case Is = "a"
                ActiveChart.SeriesCollection(1).Points(iY).Interior.ColorIndex = 1
            Case Is = "b"
                ActiveChart.SeriesCollection(1).Points(iY).Interior.ColorIndex = 2
            Case Is = "c"
                ActiveChart.SeriesCollection(1).Points(iY).Interior.ColorIndex = 3
            Case Is = "d"
                ActiveChart.SeriesCollection(1).Points(iY).Interior.ColorIndex = 4
            Case Is = "e"
                ActiveChart.SeriesCollection(1).Points(iY).Interior.ColorIndex = 5
            Case Is = "f"
                ActiveChart.SeriesCollection(1).Points(iY).Interior.ColorIndex = 6
            Case Else
                'Other groups get no special color
            End Select
        Next
    Next

End_Sub:
    If bHasDataLabels Then
        ActiveChart.ApplyDataLabels AutoText:=True, _
            HasLeaderLines:=True, ShowSeriesName:=bShowSeriesName, ShowCategoryName:=bShowCategoryName, _
            ShowValue:=bShowValue, ShowPercentage:=bShowPercentage, ShowBubbleSize:=False
    Else
        ActiveChart.SeriesCollection(1).HasDataLabels = False
    End If

End Sub

Sub SetWorkbookColors()
    ActiveWorkbook.Colors(1) = RGB(0, 0, 0)
    ActiveWorkbook.Colors(2) = RGB(0, 0, 100)
    ActiveWorkbook.Colors(3) = RGB(0, 100, 0)
    ActiveWorkbook.Colors(4) = RGB(0, 100, 100)
    ActiveWorkbook.Colors(5) = RGB(100, 0, 0)
    ActiveWorkbook.Colors(6) = RGB(100, 0, 100)
End Sub

Sub ResetWorkbookColors()
    ActiveWorkbook.ResetColors
End Sub

答案2

亲自Peltier 的图表博客是我最喜欢的 Excel 图表源。因此,请查看他在那里讨论的一些示例。要了解更多信息,请访问 MVP

我认为在这里复制他的代码并不是一件好事。因此,请尝试上述材料中所述的教程,如果您有其他问题,请发表评论。以下是我认为对您有帮助的一些事实绘制旅程变得顺利又有趣。

为了具体说明切片RGB Colour的格式pie chart,下面是代码行:

例如

ActiveChart.SeriesCollection(1).Points(1).Interior.Color = RGB(0, 176, 80)

您可能会RGB从 Windows 中的应用程序中找到颜色编号MS Paint:) 另外,这里有一篇文章显示了一些颜色和相应的RGB编号。

由于色谱是无限的,因此它应该足以为您的额外多片 pie chart,你可能会想..然而不要忘记 Excel 默认调色板有 56 种颜色索引。就像 Excel 2003 一样。因此,有时在不同版本的 Excel 中使用图表文件时会出现问题 - 您会发现某些颜色缺失,并被不吸引人的旧颜色所取代 ;)

例如,在 Excel 2007 及更高版本中创建的图表为用户提供了丰富的图形和色彩体验。然而,Excel 2003 不提供这些功能,但易于管理(而且性能极佳)。在 Excel 2007 及更高版本中,工作簿可以支持数百万种颜色,但仍然有一个具有 56 种颜色的底层工作簿调色板。

因此,当您遇到此类问题或需要解决此类问题时,请查看这篇文章:

相关内容