Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1280to1284
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pivot Bericht automatisieren

Pivot Bericht automatisieren
05.10.2012 12:17:36
Karsten
Liebe Excel Freunde,
ich habe einen Pivot Bericht automtisiert. Aus einem bestimmtem PivotField sollen nur z.B. 10 Turbinen aktiviert werden. Die Turbine ID wird über eine Do until- Schleife 10 mal neu beschrieben.
~
Do Until ActiveCell.Offset(0, 0) park
TurbineID = ActiveCell.Offset(0, 2)
ActiveCell.Offset(1, 0).Select
'Pivotbericht nur die WEA passend zum Vertrag/ Park aktivieren!
Sheets(Blatt10).Activate
With ActiveSheet.PivotTables("PivotTable1").PivotFields("turbine")
For Each pi In .PivotItems
If pi.Caption = TurbineID Then
pi.Visible = True
End If
Next pi
End With
Set pi = Nothing
Sheets(Blatt3).Activate
Loop
~
Wenn in der Quelle dieses Pivotberichts eine Turbinen nicht vorhanden ist (Abfrage auf anderem Tabellenblatt) bricht die Schleife bei "pi.Visible = True" ab - der Debuger geht auf. Ich schiebe dann auf Next pi weiter und dann läuft alles durch. Kann man hier mit einer Schleife "If Error - resume next" etwas versuchen?
Wenn Ihr ne Idee habt wäre ich happy!
Danke im Vorraus Karsten

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot Bericht automatisieren
09.10.2012 23:54:49
fcs
Hallo Karsten,
nach meiner Erfahrung muss man bei Pivot-Tabellen erst alle Werte einblenden und dann die nicht gewünschten ausblenden.
Ich hab jetzt dein Makro in Excel 2010 in die Richtung umgestrickt, weiss aber nicht, ob das mit 2003er-Pivottabellen harmoniert. Das ständige Hin- und Herschalten zwischen den beiden Blättern kann man auch vermeiden.
Gruß
Franz
Sub aatest()  'getestet unter Excel 2010
Dim Blatt10 As Variant, Blatt3 As Variant, TurbineID
Dim pvField As PivotField, pi As PivotItem, park
Dim Zelle_Park As Range, wksPivot As Worksheet
Dim lngOffsetMax As Long, lngOffset As Long
Dim bolVisible As Boolean
Blatt10 = "Blatt10" 'Testzeile
Blatt3 = "Blatt3"   'Testzeile
park = 1            'Testzeile
On Error GoTo Fehler
Set wksPivot = Worksheets(Blatt10)
Set Zelle_Park = ActiveCell
'letzte OffsetZeile mit Park-Wert ermitteln
lngOffsetMax = 0
Do Until Zelle_Park.Offset(lngOffsetMax + 1, 0)  park
lngOffsetMax = lngOffsetMax + 1
Loop
'Pivotbericht nur die WEA passend zum Vertrag/ Park aktivieren!
Set pvField = wksPivot.PivotTables("PivotTable1").PivotFields("turbine")
With pvField
.ClearAllFilters 'Alle Filter zum Pivot-Feld zurcksetzen
'Pivot-Items ausblenden, die nicht zu "park" gehören
For Each pi In .PivotItems
bolVisible = False
'Pivot-Beschriftungen mit Werten in Liste vergleichen
For lngOffset = 0 To lngOffsetMax
TurbineID = Zelle_Park.Offset(lngOffset, 2)
If pi.Caption = TurbineID Then bolVisible = True: Exit For
Next
If bolVisible = False Then
pi.Visible = False
End If
Next_pi:
Next pi
End With
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case 999 'Fehlernumer ggf. entsprechend der Fehlermeldung anpassen
Resume Next_pi
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Set pi = Nothing: Set pvField = Nothing: Set wksPivot = Nothing
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige