VBA Excel:修改现有的graphics(错误)

使用macros,我想在任何给定的时间修改图的数据系列。 每当我运行macros,我得到一个错误。 “错误438”对象不支持这个属性或方法“”。 我的代码附在下面。 谢谢。

Private Sub CommandButton2_Click() Dim objChrt As ChartObject Dim chrt As Chart Set objChart = ActiveSheet.ChartObjects("Chart 1") Set chrt = objChart.Chart With objChart .SetSourceData (ActiveSheet.Range("D2", Cells(2, N + 3))) '"N" is a user defined range End With End Sub 

我想这个问题有三层。

1) Cells返回一个范围对象,而不是范围地址 。 当在Range使用这个参数时,你需要确保返回的单元格包含一个有效的地址string ,或者直接.Address该单元格的地址。

你很less会去做前者,但是之前我已经看到了,所以我只是为了以防万一。

2)括号强制评估,所以这条线(甚至更正):

 .SetSourceData (ActiveSheet.Range("D2", Cells(2, N + 3).Address)) 

在function上等同于:

 .SetSourceData (ActiveSheet.Range("D2", Cells(2, N + 3).Address)).Value 

这可能会引起一个错误,因为括号,因为我相信.SetSourceData需要一个范围地址,所以请尝试:

 .SetSourceData ActiveSheet.Range("D2", Cells(2, N + 3).Address) 

并进一步:

3) SetSourceDataChart对象的成员,而不是ChartObject对象。 令人困惑,对吧?

 with chrt .SetSourceData ActiveSheet.Range("D2", Cells(2, N + 3).Address) End With