AW: Alle Pivotitems visible setzen mit Makro
23.06.2007 04:42:04
fcs
Hallo Günther,
nachfolgend Beispielmakros, wie man das Ein-/Ausblenden von Einträgen in Feldern einer Pivottabelle per Makro automatisieren kann.
In den 1. drei Makros werden immer das Feld und ggf. die Ein- bzw. Auszublenden Einträge der Pivottabelle festgelegt und dann die Sub-Routine zur Anpassung der Pivottabelle aufgerufen.
Für deinen Fall muss du dann "Sachbearbeiter" durch "Kto" ersetzen und im Array jeweils die Kontonummern auflisten.
Gruß
Franz
Sub WenigeEintraegeEinblenden()
Dim PivotFeld As PivotField, varEintraege As Variant
Set PivotFeld = ActiveSheet.PivotTables("Pivot-Tabelle1").PivotFields("Sachbearbeiter")
varEintraege = Array("BOTHE", "DEPRE")
Application.ScreenUpdating = False
Call PivotItemsEinAusblenden(Feld:=PivotFeld, Einblenden:=True, Liste:=varEintraege)
Application.ScreenUpdating = True
End Sub
Sub WenigeEintraegeAusblenden()
Dim PivotFeld As PivotField, varEintraege As Variant
Set PivotFeld = ActiveSheet.PivotTables("Pivot-Tabelle1").PivotFields("Sachbearbeiter")
varEintraege = Array("BOTHE", "DEPRE")
Application.ScreenUpdating = False
Call PivotItemsEinAusblenden(Feld:=PivotFeld, Einblenden:=False, Liste:=varEintraege)
Application.ScreenUpdating = True
End Sub
Sub AlleSachbearbeiterEinblenden()
Dim PivotFeld As PivotField
Set PivotFeld = ActiveSheet.PivotTables("Pivot-Tabelle1").PivotFields("Sachbearbeiter")
Application.ScreenUpdating = False
Call PivotItemsAlleEinblenden(Feld:=PivotFeld)
Application.ScreenUpdating = True
End Sub
Sub PivotItemsEinAusblenden(Feld As PivotField, Einblenden As Boolean, Liste As Variant)
'Abhängig vom Wert von Einblenden werden nur die Listenelemente angezeigt oder
'nur die Listenelemente ausgeblendet
'Einblenden = True : Listenelemente werden angezeigt, alle anderen ausgeblendet
'Einblenden = False : Listenelemente werden ausgeblendet, alle anderen angezeigt
Dim Pivot_Item As PivotItem, I%, bAnzeigen As Boolean
For Each Pivot_Item In Feld.PivotItems
bAnzeigen = False
For I = LBound(Liste) To UBound(Liste)
If Pivot_Item.Name = Liste(I) Then
bAnzeigen = True
Exit For
End If
Next
If bAnzeigen = False Then
Pivot_Item.Visible = Not Einblenden
Else
Pivot_Item.Visible = Einblenden
End If
Next
End Sub
Sub PivotItemsAlleEinblenden(Feld As PivotField)
'Alle Einträge des Feldes einblenden
Dim Pivot_Item As PivotItem
For Each Pivot_Item In Feld.PivotItems
Pivot_Item.Visible = True
Next
End Sub