Excel VBA: Prüfen, ob eine Diagrammreihe vorhanden ist, wenn nicht, weiter

Excel VBA: Prüfen, ob eine Diagrammreihe vorhanden ist, wenn nicht, weiter

Bei jeder Aktualisierung eines Pivot-Diagramms geht die Formatierung verloren. Daher habe ich einen VBA-Code, um das Diagramm bei jeder Aktualisierung der Seiten neu zu formatieren.

Private Sub Worksheet_Calculate()
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
    ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
    ActiveChart.Deselect
End Sub

Der Diagrammtyp ist eine Kombination, und alle Zeitreihen sind gestapelt, mit Ausnahme der Zeitreihe „Limit“. Der obige Code funktioniert, solange die Reihe „Limit“ im Datensatz enthalten ist. Wenn der Benutzer einen Filter oder Slicer auswählt, der die Zeitreihe „Limit“ aus dem Datensatz entfernt, gibt Excel einen Fehler aus.

Ich muss das Format optional machen.

Ich habe versucht zu testen, ob die Serie existiert. Aber es funktioniert nicht ganz.

Private Sub Worksheet_Calculate()
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked

    If ActiveChart.FullSeriesCollection("Limit") Is Nothing Then "do nothing here"
    Else ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
    End If    

    ActiveChart.Deselect
End Sub

Wie kann ich VBA dazu bringen, die „Limit“-Reihe zu überspringen, wenn sie nicht existiert?

Antwort1

Eine Möglichkeit besteht darin, Fehler einfach zu ignorieren. Dies können Sie mit demBei einem FehlerStellungnahme:

Private Sub Worksheet_Calculate()
    On Error GoTo Finish
    Dim Nope As Integer
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
    ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
    ActiveChart.Deselect
Finish:
    On Error GoTo 0
End Sub

Dadurch On Error GoTo 0wird es angewiesen, die gesamte Fehlerbehandlung abzubrechen und die Arbeit normal fortzusetzen.

Sie können On Error Resume Nextoben auch einfach Folgendes verwenden GoTo Finish:

Private Sub Worksheet_Calculate()
    On Error Resume Next
    Dim Nope As Integer
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
    ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
    ActiveChart.Deselect
End Sub

verwandte Informationen