可变图表范围

时间:2013-08-02 18:25:55

标签: excel-vba vba excel

如果Sheet1范围发生变化,我希望图表范围发生变化。范围从第5行开始,可以在任何其他行结束。试过这个:

Option Explicit

Sub Change_Chart()
Application.ScreenUpdating = False

Dim x As Range, y As Range

Set x = Sheets("Sheet1").Range("B5", Range("B5").End(xlDown))
Set y = Sheets("Sheet1").Range("Q5", Range("Q5").End(xlDown))

ActiveChart.ChartArea.Select
ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(x, y)

Application.ScreenUpdating = True
End Sub

它编译,但是当它运行时,错误说“对象'_Global'的方法'范围'失败了”

1 个答案:

答案 0 :(得分:0)

尝试更改最后一行代码:

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(ChartRangex.address & _
                             "," & ChartRangey.Address)

或此修改:

ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Union(ChartRangex, ChartRangey).Address)

编辑:我对Set line错误有所了解(根据下面的评论):

我有并且想到可能出错的地方。将Set line更改为以下内容:

Set x = Sheets("Sheet1").Range(Sheets("Sheet1").Range("B5"), Sheets("Sheet1").Range("B5").End(xlDown))`

并对其他Set line执行相同操作。