更改所有条形图(VBA)的所有条形图类别的颜色?

时间:2018-11-30 18:17:12

标签: excel vba excel-vba charts

我已经订购了大约9张条形图。问题是,当您这样做时,图表之间的名称颜色会有所不同。

所以我想在所有图表中使每一行的颜色相同。

这段代码可以运行,但是它什么也没做,我不确定为什么吗?系列是正确的事情吗?我这里仅以其中的两个为例,实际情况中有8个ifs。

Sub Button3_Click()

For Each myChartObject In Sheets("Rank Calc").ChartObjects
    For Each mySrs In myChartObject.Chart.SeriesCollection
        If mySrs.Name = "Monarch" Then mySrs.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
        If mySrs.Name = "Alpha" Then mySrs.Format.Fill.ForeColor.RGB = RGB(0, 255, 0)

    Next
Next
End Sub

我认为系列可能是错误的事情,但是我的数据的排列方式是将所有名称都放在一列中,然后将其值放在其旁边的列中,如果这有助于确定“系列”是否是正确的选择改变颜色。

我现在也尝试过:

Sub Button3_Click()
Dim rPatterns As Range
Dim iCategory As Long
Dim vCategories As Variant
Dim rCategory As Range

Set rPatterns = Sheets("RankCalc").Range("AH1:AH8")
For Each myChartObject In Sheets("RankCalc").ChartObjects
    With myChartObject.SeriesCollection(1)
      vCategories = .XValues
      For iCategory = 1 To UBound(vCategories)
        Set rCategory = rPatterns.Find(What:=vCategories(iCategory))
        .Points(iCategory).Format.Fill.ForeColor.RGB = rCategory.Interior.Color
      Next
    End With
    Next
End Sub

但是它告诉我With myChartObject.SeriesCollection(1)(该对象不支持该方法)。所以我不知道该怎么办。

1 个答案:

答案 0 :(得分:1)

更改系列的颜色,
设置属性-> .Interior.Color

请参阅以下代码段...

Sub Button3_Click()
  Dim myChartObject As ChartObject
  Dim mySrs As Series

  For Each myChartObject In Sheets("Sheet1").ChartObjects
    For Each mySrs In myChartObject.Chart.SeriesCollection
      Select Case mySrs.Name
        Case "A"
          mySrs.Interior.Color = RGB(255, 0, 0)
        Case "B"
          mySrs.Interior.Color = RGB(0, 255, 0)
        Case "C"
          mySrs.Interior.Color = RGB(0, 0, 255)
        Case "D"
          mySrs.Interior.Color = RGB(255, 255, 0)
        Case "E"
          mySrs.Interior.Color = RGB(0, 0, 0)
      End Select
    Next
  Next
End Sub