Vba 从数据透视表创建图表

Vba 从数据透视表创建图表,vba,excel,Vba,Excel,我有一张床单和两张透视表。我试图为透视表生成两个不同的图表 我尝试了下面的代码,但是我得到了一个 自动化误差 排队 .SetSourceData ptr1 谁能帮忙,我怎么才能避免这个 这是我两个图表的代码。还有,我可以有一个代码,而不是两个单独的代码吗 Sub chartG702() Dim cht As Chart If ActiveSheet.PivotTables.Count = 0 Then Exit Sub Set ptable1 = ActiveSheet.PivotTables(

我有一张床单和两张透视表。我试图为透视表生成两个不同的图表

我尝试了下面的代码,但是我得到了一个

自动化误差

排队

.SetSourceData ptr1

谁能帮忙,我怎么才能避免这个

这是我两个图表的代码。还有,我可以有一个代码,而不是两个单独的代码吗

Sub chartG702()
Dim cht As Chart
If ActiveSheet.PivotTables.Count = 0 Then Exit Sub
Set ptable1 = ActiveSheet.PivotTables(1)
Set ptr1 = ptable1.TableRange2
Set sh = ActiveSheet.ChartObjects.Add(Left:=390, _
    Width:=390, _
    Top:=350, _
    Height:=250)
sh.Select
Set cht = ActiveChart
With cht
.SetSourceData ptr1
.ChartType = xlColumnStacked
End With
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)

cht.SeriesCollection(1).HasDataLabels = True '<~~ Red
cht.HasTitle = True
cht.ChartTitle.Text = "M1"
End Sub
子图表G702()
暗海隧As图
如果ActiveSheet.PivotTables.Count=0,则退出Sub
Set ptable1=ActiveSheet.PivotTables(1)
设置ptr1=ptable1.TableRange2
设置sh=ActiveSheet.ChartObjects.Add(左:=390_
宽度:=390_
顶部:=350_
高度:=250)
sh.选择
设置cht=ActiveChart
与红隧
.SetSourceData ptr1
.ChartType=xl列
以
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=RGB(255,0,0)

cht.SeriesCollection(1).HasDataLabels=True'将集合ptr1=ptable1.TableRange2更改为集合ptr1=ptable1.TableRange1.TableRange2包括数据透视表的页面字段。@Dy.Lee我试过了,但仍然得到了错误它在我的工作表中运行良好TableRange1,tablerange2.检查您的vb引用。将Set ptr1=ptable1.tablerange2更改为Set ptr1=ptable1.TableRange1.tablerange2包括数据透视表的页面字段。@Dy.Lee我尝试过,但仍然出错它在我的工作表中运行良好TableRange1,tablerange2.检查您的vb引用。
Sub chartG70()
Dim cht As Chart
   If ActiveSheet.PivotTables.Count = 0 Then Exit Sub
Set ptable = ActiveSheet.PivotTables(2)
Set ptr = ptable.TableRange1
Set sh = ActiveSheet.ChartObjects.Add(Left:=440, _
    Width:=390, _
    Top:=50, _
    Height:=250)
sh.Select
Set cht = ActiveChart
With cht
.SetSourceData ptr
.ChartType = xlColumnStacked
End With
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(0, 255, 0)

cht.SeriesCollection(1).HasDataLabels = True '<~~ Red
cht.HasTitle = True
cht.ChartTitle.Text = "M"
End Sub