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 0
wird es angewiesen, die gesamte Fehlerbehandlung abzubrechen und die Arbeit normal fortzusetzen.
Sie können On Error Resume Next
oben 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