2012-12-16 72 views
1

所以我有一張名爲「儀表板」的工作表,我有幾個圖表,但每個星期我都會向這些圖表所基於的表格添加數據。具有此表的數據的第二張表是「歷史總計」,我想要的數據在列A到E(這包括標籤和標題)中。我試圖自動化圖表更新,我不知道爲什麼這不起作用。這裏是我到目前爲止的代碼:我已經試過了分隔條件的範圍應用程序定義的或對象定義的錯誤

Sheets("Dashboard").Select
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.SetSourceData Source:=Sheets("Historical Totals").Range("A1", Range("E1").End(xlDown))

,它是選擇合適的數據,所以我真的不知道我正在做的錯誤。

+1

調用'表(「儀表板」)。激活'以及開始之前。 –

+0

所以我添加了這個評論,它仍然給出了同樣的錯誤。不會調用'Sheets(「Dashboard」)。選擇'儘管做同樣的事情? – JakeMWP

+0

你正在使用哪個版本的XL? – whytheq

回答

2

請嘗試以下操作。你需要每次使用範圍時引用的數據表:

Sheets("Dashboard").ChartObjects("Chart 4").Activate 
ActiveChart.SetSourceData _ 
     Source:=Sheets("Historical Totals").Range(Sheets("Historical Totals").Range("A1"), _ 
       Sheets("Historical Totals").Range("E1").End(xlDown)) 
+0

謝謝!這並不適合我 - 給了我「對象不支持這個屬性或方法」的錯誤,但我只是要求圖表激活,然後用'ActiveChart'完成'SetSourceData'。這樣做就像一個魅力。謝謝! – JakeMWP

+0

答覆已更新。 – InContext

0

假設你只有在worksheet「歷史彙總」表我通常會去xlUp而非xlDown但下面是有效地同菲利普阿巴恩斯的回答:

Sub setArea() 

With Excel.ActiveWorkbook 
     '.Sheets("Dashboard").Select '<==no need to select for the code to execute 
     .Sheets("Dashboard").ChartObjects("Chart 1").Activate 
End With 

With Excel.ActiveWorkbook.Sheets("Historical Totals") 
    Excel.ActiveChart.SetSourceData _ 
         Source:=.Range(_ 
            .Cells(1, 1), _ 
            .Cells(.Cells(.Rows.Count, 5).End(Excel.xlUp).Row, 5) _ 
            ) 
End With 

End Sub 
+0

'xlUp'的問題是我在任何時候都不知道表的大小。它每週都在增長,所以我試圖通過檢查實際存在的信息來確定數據的大小。 – JakeMWP

+0

...嗯,聽起來不像你測試我的代碼:或明白它做了什麼。它有效地從表單的最後一行(我XL版本中的1,048,576行),然後直到下一行有數據!所以如果你的數據從50行增長到70行,沒問題,它總是會找到最後一行數據!使用'xlUp'的好處是,如果你有50行數據,但是'E30'是空白的,然後嘗試從'E1'使用'xldown',那麼肯定不會找到'E50' – whytheq

相關問題