VBA Excel:修改现有图表(错误)

时间:2014-08-15 16:40:30

标签: excel vba excel-vba

使用宏,我想在任何给定时间修改图形的数据系列。每当我运行宏时,我都会收到错误。 "错误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 个答案:

答案 0 :(得分:3)

我认为这个问题有三个层次。

1)Cells返回范围对象,而不是范围地址。在Range中将此作为参数使用时,您需要确保返回的单元格包含有效的地址字符串,或者您直接引用.Address的{​​{1}}细胞。

你很难做到前者,但我之前已经看过它,所以我提到它以防万一。

2)括号强制评估,所以这一行(即使更正):

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

在功能上等同于:

.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