为工作表中的所有条形图更改Excel条形图的条形颜色(仅一种颜色)

z31licg0  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(140)

我有一个有500个图表的Excel工作簿。当我对工作簿进行更改时,图表通常会丢失格式。
例如,当我第一次创建所有图表时,我建立了一个颜色主题。
有xlColumntered和有折线图。
xlColumntered中的条形应该是绿色,但Excel会随机将其更改为蓝色。
是否有一种方法可以使用Excel仅选择工作表中的xlColumntered图表,并将颜色从蓝色更改为绿色?(不希望影响任何其他图表类型。)
另外,希望将折线图的线条颜色从蓝色更改为绿色。

Sub test()

Worksheets("portfolio_charts").Activate

ActiveSheet.ChartObjects.ChartType("xlColumnClustered").Select

End Sub

字符串
这不是我想要的Change colors of all bar chart categories for all bar charts (VBA)?

0lvr5msh

0lvr5msh1#

遍历工作表的所有图表(不要使用ActivateSelect)。检查图表类型以决定是否要执行以下操作:

Sub ChangeAllBarChars()
    Dim co As ChartObject
    For Each co In ThisWorkbook.Sheets("portfolio_charts").ChartObjects
        If co.Chart.ChartType = xlColumnClustered Then
            SetChartColor co.Chart
        End If
    Next
End Sub

字符串
不,你可以对该图表的数据序列施展魔法。下面的代码将所有条形图设置为绿色,可能不是你想要的-由你决定。颜色RGB(0, 192, 0)是绿色,请决定你想要的确切颜色。
如果您设置ForeColor.RGB,即使Excel文件的配色方案更改,颜色也不会更改。如果您使用ForeColor.ObjectThemeColorForeColor.TintAndShade,则颜色将在配色方案更改时更改。

Sub SetChartColor(ch As Chart)
    Dim ser As Series
    For Each ser In ch.FullSeriesCollection
        ser.Format.Fill.ForeColor.RGB = RGB(0, 192, 0)

        ' Use the following when you want to stick to the scheme
        ' ser.Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent6
        ' ser.Format.Fill.ForeColor.TintAndShade = 0.4

    Next
End Sub

wz1wpwve

wz1wpwve2#

你没有回答我的澄清问题,所以我将展示一种为ChartArea和PlotArea着色的方法:

Sub ColorChartsChartArea()
  Dim sh As Worksheet, ch As ChartObject
  
  Set sh = ThisWorkbook.Sheets("portfolio_charts")
  For Each ch In sh.ChartObjects
        If ch.Chart.ChartType = xlColumnStacked Then
            ch.Chart.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
        End If
  Next ch
End Sub

字符串

相关问题