2012-10-17 113 views
3

我做了一個宏,它根據我在列表框(Lbox1)中做出的選擇在多個數據系列上創建一個動態圖表。只要我在列表框中進行任何選擇,宏就會運行。但是,每當我刪除所有數據系列以創建新圖表時,它會引發錯誤。 我是VBA的新手。請幫我解決這個問題。VBA刪除動態圖表中的所有數據系列

Public Sub listbox_selection() 
    Dim i As Integer 
    Dim temp As String 
    Dim k As Integer 
    Dim s As SeriesCollection 

    k = Sheets("Plan1").ChartObjects(1).Chart.SeriesCollection.count 

    ##This part giving error 
    For i = 1 To k 
    Sheets("Plan1").ChartObjects(1).Chart.SeriesCollection(i).Delete 
    Next 
    #### 

    Sheets("Plan1").ListBoxes("LBox1").Select 
    For i = 1 To Sheets("Plan1").Shapes("LBox1").ControlFormat.ListCount 
    If Sheets("Plan1").ListBoxes("LBox1").Selected(i) = True Then 
     Call Listit(X:=i) 
    End If 
    Next 
End Sub 

Public Sub Listit(ByVal X As Integer) 
    X = X + 3 
    With Sheets("Plan1").ChartObjects(1).Chart 
    With .SeriesCollection.NewSeries 
     .XValues = Range("Q2:U2") 
     .Values = Range("Q" & X & ":U" & X & "") 
     .Name = Range("P" & X).Value 
    End With  
    End With 
End Sub 
+4

你應該通過的SeriesCollection'因爲我向後步驟= K至1個步驟-1' –

+0

什麼是錯誤訊息? –

+0

蒂姆的推理背後的季節是因爲我們說有3系列..你刪除系列集合(1)<---,第二個成爲第一個,第三個成爲第二個系列。所以你會得到一個「vba out of subscript range」error – Larry

回答

8

試試這個,

Sub temp() 
    ActiveSheet.ChartObjects("Chart 1").Activate 
    For Each s In ActiveChart.SeriesCollection 
     s.Delete 
    Next s 
End Sub 
+0

@ Tim ...謝謝:) ......它的工作! ..我只是想知道爲什麼它在另一種情況下給了錯誤。 –

3

您可以使用Sheets("Plan1").ChartObjects(1).Chart.ChartArea.ClearContents