使用 VBA 自定义图表

Customzing the Charts using VBA

我有一个带 Pivot table 的 sheet,我正在从 table 创建一个柱状堆积图。

我想更改图表中图例条目的颜色,并希望每次创建图表时都有一个图表标题。

我尝试了下面的代码,我得到了

Object variable or with block variable not set

我在行

中收到错误
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(155, 213, 91)

任何人都可以告诉我如何根据我的要求创建图表。我添加了当前图表和所需图表的图像。

Sub chart11()
    Dim sh As Shape
    Dim cht As Chart

    If ActiveSheet.PivotTables.Count = 0 Then Exit Sub

    Set ptable = ActiveSheet.PivotTables(1)
    Set ptr = ptable.TableRange1
    Set sh = ActiveSheet.Shapes.AddChart
    sh.Select

    With ActiveChart
        .SetSourceData ptr
        .ChartType = xlColumnStacked
    End With

    cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(155, 213, 91)
    cht.Axes(xlCategory).MinimumScale = 5
    cht.Axes(xlCategory).MaximumScale = 40
    cht.HasTitle = True    
    cht.ChartTitle.Text = "Default Chart"
End Sub

这是我现在代码生成的图表,如果我注释掉错误行:

我想要这种类型的图表,颜色图例和图表标题都有变化:

您不能使用 cht.Axes(xlCategory).MinimumScale = 5 和 MaximumScale。 因为数据透视图不支持散点图。 只有散点图可以设置xlCategory Scale。

Sub chart11()
    Dim sh As Shape
    Dim cht As Chart

    If ActiveSheet.PivotTables.Count = 0 Then Exit Sub

    Set ptable = ActiveSheet.PivotTables(1)
    Set ptr = ptable.TableRange1
    Set sh = ActiveSheet.Shapes.AddChart
    sh.Select
    Set cht = ActiveChart
    With cht
        .SetSourceData ptr
        .ChartType = xlColumnStacked
    End With

    cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0) '<~~ Red
    cht.SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(0, 255, 0) '<~~ green
    'cht.Axes(xlCategory).MinimumScale = 5
    'cht.Axes(xlCategory).MaximumScale = 40
    cht.HasTitle = True
    cht.ChartTitle.Text = "Default Chart"
End Sub