使用图表工作表中的SetSourceData更新图表

时间:2014-05-13 11:32:56

标签: vba excel-vba charts excel

我在工作表中有一个嵌入式图表" Daten_G9-G10"。在同一张表格中,有一个名称" Chart9",这是一个动态范围:

= OFFSET(' Daten_G9-G10' $ G $ 31日; 0; 0; MAX(' Daten_G9-G10' $ F $ 31:!$ F $ 51)+1; COUNTA (' Daten_G9-G10' $ G $ 30:!$ $ AAA 30))

我的目标是更新图表的数据范围。

Sub UpdateChartSourceData()
  With ActiveSheet
   .ChartObjects(1).Chart.SetSourceData _
   Source:=.Range("Chart9"), _
   PlotBy:=xlRows
  End With
End Sub

到目前为止,这个宏运作良好。但我已将图表移到新表中:" G9"。这就是我的问题开始的地方:"运行时错误'',对象不支持此属性或方法"。

我如何调整我可以更新此图表的宏,仍然参考表格中的名称" Daten_G9-G10"作为图表的数据范围?

1 个答案:

答案 0 :(得分:0)

现在,您的代码仅引用ActiveSheet,这可能是因为您的图表在ActiveSheet上,但数据在另一张表上而导致错误。

试试这个:

Sub UpdateChartSourceData()
  ' ## Modify the next line to refer to your chart sheet's name:
  With Worksheets("_Sheet_With_Chart_")
      .ChartObjects(1).Chart.SetSourceData _
          Source:=Worksheets("Daten_G9-G10").Range("Chart9"), _
          PlotBy:=xlRows
  End With
End Sub

从评论中更新

如果处理图表工作表,请修改以使用Sheets集合(Worksheets会引发错误)

Sub UpdateChartSourceData()
  ' ## Modify the next line to refer to your chart sheet's name:
  With Sheets("_Sheet_With_Chart_")
          .Chart.SetSourceData Source:=Worksheets("Daten_G9-G10").Range("Chart9"), _
          PlotBy:=xlRows
  End With
End Sub