AW: Pivot-Table VBA Programmierung
14.09.2005 11:32:18
Luschi
Hallo Chris,
wenn Du Dir meine xls-Beispieldatei heruntergeladen hast, dann siehst Du folgenden Code:
Sub pivotFilter(tName As String, pName As String)
Dim wb As Workbook, ws As Worksheet, _
pTab As PivotTable, pF As PivotField, pI As PivotItem
Set wb = ThisWorkbook
Set ws = wb.Worksheets(tName)
Set pTab = ws.PivotTables(pName)
For Each pF In pTab.PivotFields
If pF.Name = "Firma" Then
For Each pI In pF.PivotItems
'alle Firmennamen durchlaufen und sichtbar schalten!
pI.Visible = True
If "alle" <> ws.Range("F27") Then
'für jede Firma die Gesamtsumme auslesen und _
vergleichen mit Auswahl-Liste
If pTab.GetPivotData("Betrag", pF.Name, pI.Name) < ws.Range("F27") Then
pI.Visible = False
End If
End If
Next pI
Exit For
End If
Next pF
'Pivot-Tabelle aktualisieren
ActiveSheet.PivotTables(pName).PivotCache.Refresh
'alle Objekt-Variablen deaktivieren
Set pI = Nothing
Set pF = Nothing
Set pTab = Nothing
Set ws = Nothing
Set wb = Nothing
End Sub
Die Schleife "For Each pF In pTab.PivotFields" durchläuft alle Felder.
Die Schleife "For Each pI In pF.PivotItems" durchläuft alle Items eines Feldes.
Entweder Du benennst 1 Item mit Namen und machst es sichtbar mit:
If pI.Name = "blabla" Then
pI.Visible = True
Else
pI.Visible = False
End If
Oder Du setzt 1 Bedingung wie z.B.:
If pTab.GetPivotData("Betrag", pF.Name, pI.Name) < ws.Range("F27") Then
pI.Visible = False
End If
Hier wird geprüft, ob der Item-Wert "Betrag" kleiner ist als Wert in der Zelle F27
aus der Tabelle mit dem Namen, der in der Variablen tName steht.
Nur so kannst Du die Items entsprechend anzeigen lassen oder auch nicht. Aber wie schon
gesagt, 1 Item muß sichtbar sein.
Gruß von Luschi
aus klein-Paris