2013-08-02 150 views
0

我希望圖表範圍在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

使用命名範圍。 vba看起來已經殺死了 – exussum

回答

0

嘗試用代碼的最後一行的這種變化:

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

或此修改:

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

編輯:我有一個關於想法0錯誤(根據下面的評論):

我有和想法什麼可能是錯的。更改Set line弄成這個樣子:

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

做同樣與其他Set line

+0

不幸的是,它在代碼 – jmaz

+0

@Max的第一個「Set」行上崩潰,然後顯示更多的代碼,包括變量聲明。 –

+0

請參閱上面的完整代碼 – jmaz