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?
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
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