2011-12-05 125 views
3

我有一個在Excel 2003中編寫的VBA宏,它在Excel 2003和2007中工作得非常好。但是,它在Excel 2010中摔倒了,我無法說出原因。無法刪除在Excel 2010中使用VBA的圖表系列

宏在用戶添加或刪除數據後更新圖表中的系列。第一步(數據驗證之後)是刪除圖表中第一個系列以外的所有系列。

'clear all chart series except for series 1 
Do While theChart.SeriesCollection.Count > 1 
    theChart.SeriesCollection(2).Delete 
Loop 

暫停執行在循環的第一個迭代,錯誤對話框「方法‘刪除’對象‘系列’的失敗。」

我想也許對象模型在Excel 2010中發生了變化,所以我用宏錄製器來記錄刪除了一系列的行動:

ActiveSheet.ChartObjects("Plant Feed").Activate 
ActiveChart.SeriesCollection(3).Select 
Selection.Delete 

運行錄製的宏(與3系列重新設置明顯)停止在第二行,用「方法」選擇「對象」系列「失敗。」

我再補充一個對象變量和一些MSGBOX線,試圖調試問題:

Dim theSeries As Series 
ActiveSheet.ChartObjects("Plant Feed").Activate 
MsgBox (ActiveChart.SeriesCollection(3).Name) 
Set theSeries = ActiveChart.SeriesCollection(3) 
MsgBox (theSeries.Name) 
theSeries.Delete 

對象變量正確設置和消息框給出正確的輸出,但它仍然落在了上theSeries。刪除。

最後,我重複了上述所有使用Excel 2010中創建的全新圖表,以防萬一它是2003年的遺留問題,但我得到了同樣的錯誤。

我正在撕裂我的頭髮。我在網上搜索解決方案無濟於事,這是什麼導致我到這個堆棧溢出網站。我會很感激任何人都可以提供的幫助。

問候,

達倫

+0

+1用於詳細說明迄今爲止採取的步驟。問題:紙張受到保護的可能性有多大? –

+0

謝謝你Rachel。我希望是這樣,儘管我會覺得有點傻。自從我發佈以來,我已經確定了一件事,這讓我認爲這是2003年的某種遺產。如果我在新工作簿中創建新圖表,我不會遇到問題。但是現有工作簿中的新圖表不起作用,即使我先刪除所有其他圖表和VBA模塊。我想我將不得不從頭開始重新創建整個工作簿。 Darren

+0

Rachel的+1未能正常工作,但您仍然可以享受它。順便說一下,您可以嘗試在引起錯誤的行上設置一個斷點並查看'theChart.SeriesCollection(2)'對象並檢查它是什麼 – JMax

回答

0

您是否嘗試過這種方式呢?

For x = theChart.SeriesCollection.Count To 2 Step -1 
    theChart.SeriesCollection(x).Delete 
Next x 
0

從收集開始刪除項目,總是會有第一個元素,直到您全部刪除它們。

Do While theChart.SeriesCollection.Count > 1 
    theChart.SeriesCollection(1).Delete 
    'theChart.SeriesCollection(2).Delete  
Loop 
+0

謝謝user2169636和其他人。事實證明,.xlsm文件中存在某種故障。我導出了所有宏模塊,並將圖表重建爲新文件,並且一切正常。我的公司當時正在使用「兼容模式」,並且我聽說過有關此工作簿的其他報告。 – Darren