使用宏,我想在任何给定时间修改图形的数据系列。每当我运行宏时,我都会收到错误。 "错误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
答案 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)SetSourceData
是Chart
对象的成员,而不是ChartObject
对象的成员。令人困惑,对吧?
with chrt
.SetSourceData ActiveSheet.Range("D2", Cells(2, N + 3).Address)
End With