2016-09-20 1 views
0

Ich versuche, alle Diagramme in einem Blatt um 12 Monate zu erweitern, um ein weiteres Jahr in einem monatlichen Liniendiagramm hinzuzufügen. Das habe ich bisher.Wie kann ich ein Diagramm in Excel um eine bestimmte Anzahl von Monaten einschließlich benannter Bereiche erweitern?

Sub Chart_Extender() 

Dim Rng_Extension As Integer 
Dim Series_Formula As String 
Dim StartPoint As String 
Dim EndPoint As String 
Dim CommaSplit As Variant 
Dim ColonSplit As Variant 
Dim grph As ChartObject 
Dim ser As Series 


'Determine the length of the extension (in cells) 
On Error GoTo BadEntry 
    Rng_Extension = InputBox(_ 
    "How many cells do you want to extend your chart's series?", _ 
    "Chart Extender") 
    On Error GoTo 0 

    For Each grph In ActiveSheet.ChartObjects 
    For Each ser In grph.Chart.SeriesCollection 

     Series_Formula = ser.Formula 


     CommaSplit = Split(Series_Formula, ",") 

     ColonSplit = Split(CommaSplit(2), ":") 

     StartPoint = ColonSplit(0) 

     EndPoint = ColonSplit(1) 

     EndPoint = Range(EndPoint).Offset(0, Rng_Extension).Address 

     ser.Values = StartPoint & ":" & EndPoint 'Combine Start and End Point & Set Series = To It   

     If CommaSplit(1) <> "" Then 
      ColonSplit = Split(CommaSplit(1), ":")    
      StartPoint = ColonSplit(0)     
      EndPoint = ColonSplit(1)     
      EndPoint = Range(EndPoint).Offset(0, Rng_Extension).Address 'Extended Ending Point Range  
      ser.XValues = StartPoint & ":" & EndPoint 'Combine Start and End Point & Set Series = To It 
     End If 
    End If 
Next ser 
Next grph 
MsgBox "Your chart has been Extended by " & Rng_Extension & " positions." 
Exit Sub 
End Sub 

Da es jedoch in den Diagrammen sind benannte Bereiche und so scheint es, stecken zu bleiben und einen Fehler bei EndPoint = ColonSplit (1) sagen: „Subscript out of range“. Gibt es eine Möglichkeit, das zu beheben? Gibt es auch eine Möglichkeit, eine weitere Schleife hinzuzufügen, um dies durch jedes Arbeitsblatt in der Arbeitsmappe zu gehen und alle zu erweitern?

+0

verweisen, das würde bedeuten, dass 'ColonSplit (1)' keinen Wert haben. Wenn es ausfällt und Sie auf "Debug" klicken, bewegen Sie den Mauszeiger über diese Variable und es sollte Ihnen zeigen, was dort gespeichert ist. Oder geben Sie im Direktfenster (STRG + G in VBE drücken) '? ColonSplit (1)' ein und prüfen Sie, ob der Fehler oder ein Wert zurückgegeben wird. – BruceWayne

+0

Sie gehen auch davon aus, dass: ** 1 **. Der Benutzer wird immer einen Wert angeben. ** 2 **. Der Benutzer drückt nicht "Abbrechen". **3**. Benutzereingaben sind immer gültig. Ich würde die Eingabe validieren, bevor ich in eine der "FOR" -Schleifen eintrete – Zac

Antwort

0

Nachdem Sie Benutzereingaben validiert und sind sicher, dass Sie die Charts zu erweitern brauchen, erstellen Sie eine Arbeitsmappe und Arbeitsblatt-Objekt:

Dim oWB As Workbook: Set oWB = ThisWorkbook 
Dim oWS As Worksheet 

nun die folgende Schleife vor jedem Ihrer FOR Schleifen hinzu:

For Each oWS In oWB.Worksheets 
    ' Your FOR loops here 
Next 

Dies wird durch alle Blätter in Ihrer Arbeitsmappe gehen.
HINWEIS: Vergessen Sie nicht oWS hinzufügen, bevor Sie eine Range oder Cell

Verwandte Themen