【问题标题】:Update chart with SetSourceData in a chart sheet在图表工作表中使用 SetSourceData 更新图表
【发布时间】:2014-05-13 21:45:31
【问题描述】:

我在工作表“Datan_G9-G10”中有一个嵌入式图表。在同一张表中有名称“Chart9”,它是一个动态范围:

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

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

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

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

如何调整可以更新此图表的宏,仍然将工作表中的名称“Datan_G9-G10”作为图表的数据范围?

【问题讨论】:

  • 你用图表在工作表上运行了宏,对吗?
  • 首先是的。但现在以前的(嵌入式)图表本身就是一个图表表。如果可能的话,我想在任何工作表上运行宏。

标签: vba excel charts


【解决方案1】:

现在,您的代码只引用了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

来自 cmets 的更新

如果处理图表,修改为使用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

【讨论】:

  • 好的,我已经更改了代码。不幸的是,我收到了一个新错误:“指定的维度对当前图表类型无效。”是因为“G9”是图表吗?提前致谢
  • 对于不需要.ChartObjects(1).Chart 的图表工作表,只需使用.SetSourceData
  • @thoscha 您还必须引用Sheets(_chartsheet_name) 而不是Worksheets。我已经更新了上面的答案:)
猜你喜欢
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
相关资源
最近更新 更多