Beginnen Sie mit dem Worksheet_PivotTableUpdate-Ereignis
Das Arbeitsblatt, in dem sich das PivotTable befindet, benötigt den folgenden Code. Daher ruft es in Modul 1 die neue Funktion 'RefreshAbsenceLabels' auf, wenn dieses speziell benannte PivotTable aktualisiert wird:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) If Target.Name = "This Specific Table" Then Module1.RefreshAbsenceLabels MsgBox "The PivotTable has been updated." End If End Sub
Sprich mit dem richtigen Diagramm und aktualisiere seine Legende
Public Function RefreshAbsenceLabels() Set DaysAbsent = ActiveWorkbook.Worksheets("Dashboard").ChartObjects("Department Absences") With DaysAbsent.Chart If .HasLegend Then .HasLegend = False End If .HasLegend = True
Richten Sie Ihren Zähler ein und stellen Sie ihn auf die Anzahl der Serien minus eins ein
Der Minuspunkt ist die Tatsache, dass die FullSeriesCollection von 1 bis X nummeriert wird, während die LegendEntries-Elemente von X-1 bis 0 nummeriert werden
Dim x As Integer x = .FullSeriesCollection.Count - 1
Durchlaufen Sie die Serie, und löschen Sie die entsprechenden LegendEntries-Elemente
Der Zähler läuft gegen Null. Der Vorteil der umgekehrten Nummerierung von LegendEntries besteht darin, dass Sie nicht jedes Mal, wenn Sie Objekte löschen, einen Ausgleich für fehlende Elemente vornehmen müssen: Alle neu nummerierten Elemente wurden bereits behandelt, und es ist nicht mehr wichtig, um welche Nummer es sich handelt.
Application.WorksheetFunction.Max ermittelt den höchsten Wert aus der Serie
For Each ser In .FullSeriesCollection If Application.WorksheetFunction.Max(ser.Values) = 0 Then 'MsgBox "Deleting" & ser.Name & " - " & x .Legend.LegendEntries(x).Delete End If x = x - 1 Next End With End Function