2013-04-01 20 views
0

我正在寫一個宏來在Excel 2010中創建XY散點圖,但遇到一些麻煩。我正在嘗試使用循環分配.Name,.XValues和.Value,但每當我的宏完成時,圖表中有幾個不需要的條目。這裏是我的代碼:將多個不需要的序列添加到XY散點圖的宏

For m = 4 To 36 
    ActiveChart.SeriesCollection.NewSeries 
    ActiveChart.SeriesCollection(m).Name = Range("A" & m) 
    ActiveChart.SeriesCollection(m).XValues = Range("Q" & m) 
    ActiveChart.SeriesCollection(m).Values = Range("R" & m) 
    Next m 

出於某種原因被添加前三系列M1:M2,N1:N2,和O1:O2,但我不知道爲什麼。我只需要來自列A,Q和R的數據。同樣在圖表的底部,總是有十個附加系列(例如Series1到Series10)。有誰知道爲什麼會發生這種情況,我能做些什麼來解決它?

+0

你必須有一個把前3個系列,'M1一些其他代碼:M2','N1:N2'和'O1:O2',否則,這條線('ActiveChart.SeriesCollection(M ).Name = Range(「A」&m)')會因爲m = 4而失敗,而ActiveChart.SeriesCollection.Count會= 0。 –

+0

我的宏沒有太多。我確定其他值沒有在任何地方定義。 Tim提出的建議是關於在創建圖表後立即刪除任何系列,以解決我的問題。 – Marc

+0

Tim的建議刪除該系列作品,因爲圖表中已經有3個系列(否則,如果圖表中有4個系列,您的代碼將無法嘗試爲系列4分配「名稱」)。這些系列可能有幾種可能的發生方式:如果你沒有故意將它們放在那裏,那麼當圖表被創建時,或許無意中有一個「選擇」例如「M1:O2」,或者這可能是現有的圖表與現有系列等無論如何,在開始時刪除所有系列將避免這種錯誤。 –

回答

1

嘗試下面的內容:比依賴SeriesCollection索引更安全。另外,如果你在代碼中創建圖表,那麼默認情況下它將從當前選擇的任何範圍中選取數據。爲了安全起見,您應該在創建圖表後循環並刪除任何現有的系列,然後再添加所需的數據。

Dim s 

For m = 4 To 36 
    Set s = ActiveChart.SeriesCollection.NewSeries() 
    With s 
     .Name = Range("A" & m) 
     .XValues = Range("Q" & m) 
     .Values = Range("R" & m) 
    End With 
Next m 
+0

+1擊敗了我。 –

+0

非常感謝Tim的迴應。在創建圖表後,循環並刪除現有系列似乎已解決了我的問題。你發佈的代碼也比我的要乾淨得多。以下是我現在有: 做,直到ActiveChart.SeriesCollection.Count = 0 ActiveChart.SeriesCollection(1).Delete 循環 昏暗的小號 對於M = 4〜36 集合S = ActiveChart.SeriesCollection.NewSeries () 帶S 請將.Name =範圍( 「A」 &M) .XValues =範圍( 「Q」 &M) .Values =範圍( 「R」 &M) 完隨着 接着米 這代碼正是我所需要的。再次感謝你! – Marc