Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1720to1724
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

Automatischer Filter in Pivot

Automatischer Filter in Pivot
08.11.2019 17:31:21
Nils
Hallo Zusammen,
ich habe ein kleines VBA-Problem und komme einfach nicht weiter. Ich habe schon alle Foren durchkämmt, aber nichts gefunden was mir weiter hilft.
Hier mal die Eckdaten zum Makro: ich habe eine Fehlerliste aus der automatisch Mails an die zuständigen Personen mit den zugeordneten Fehlern verschickt werden sollen. Soweit ist alles fertig, nur mit dem automatischen Filtern (besser gesagt der Schleife) gibt es Probleme.
Er bezieht sich auf folgende Worksheets:
- "Stammdaten Controller" => eine Liste mit Namen, nach denen die Pivot gefiltert werden soll
- "Auswertung Pivot" => das WS mit der Pivottabelle. Die Namen sind als Filter eingestellt. Die gefilterte Pivot beginnt ab Zelle A4
- "Transfer Outlook" => ein WS in das die Werte aus der Pivot kopiert werden (aus Formatierungsgründen) um dann in die Mail kopiert zu werden.
Der unten aufgeführte Code ist ein komprimierter Code zu Testzwecken. Die erste Variable durchläuft der Code tadellos (er filtert richtig und kopiert die Werte in eine neue Mail). Zum testen habe ich die Namensliste auf 2 Namen komprimiert (I1:I2).
Sub Test()
Dim I As Long              ' Durchlaufzahl der Zeilen in Tabelle Stammdaten Controller
Dim j As long        ' letzte Zeile der Tabelle in Stammdaten Controller
With Worksheets("Stammdaten Controller").Range("I1:I2")
j = .Cells(.Rows.Count, 9).End(xlUp).Row
with Worksheets("Auswertung Pivot")
For i = 1 To j
ActiveSheet.PivotTables("Pivot-Fehlerliste").PivotFields("Controller (SAP)"). _
ClearAllFilters
ActiveSheet.PivotTables("Pivot-Fehlerliste").PivotFields("Controller (SAP)"). _
CurrentPage = Sheets("Stammdaten Controller").Cells(i, 9).Value
Range("A4", Range("a4").End(xlDown)).Select
Selection.Copy
Sheets("Transfer Outlook").Select
Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteAllMergingConditionalFormats, Operation:=xlNone,  _
SkipBlanks _
:=False, _
Transpose:=False
Call AutoMail
Next i
End With
End With
End Sub

Nachdem das Makro die Variable für den ersten Wert durchlaufen hat und die Mail inkl. Werte erstellt hat, kommt immer folgende Fehlermeldung: "Laufzeitfehler 1004: Pivottalbes Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden.". Der Fehler bezieht sich auf die Pivotcodes (clearfilters & select filter) unter "for j = 1 to 2.
Ich weiß das der Fehler an der Schleife liegt, aber ich komme einfach nicht auf die Lösung.
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und hoffe das ich keine Thread doppelt aufgemacht habe.
Vielen Dank schon Mal für die Hilfe!
Gruß
Nils
P.s. Eine Datei kann ich aus Verschwiegenheitsgründen leider nicht hochladen.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatischer Filter in Pivot
09.11.2019 09:41:42
Luschi
Hallo Nils,
beim 1. Schleifendurchlauf greifst Du auf
ActiveSheet.PivotTables("Pivot-Fehlerliste")....
zu und dann
Sheets("Transfer Outlook").Select
Damit ist ActiveSheet umgestellt und nicht mehr die selbe Arbeitstabelle beim 1. Zugriff auf _ PivotTabbel("...") und zurückstellen auf die Tabelle, die die Pivfottabelle enthält, passiert ja nicht - besser ist es mit Objektvariablen zu arbeiten.

Sub Test()
Dim pvtWs As Worksheet, pvT As PivotTable
Dim I As Long        ' Durchlaufzahl der Zeilen in Tabelle Stammdaten Controller
Dim j As Long        ' letzte Zeile der Tabelle in Stammdaten Controller
Set pvtWs = ThisWorkbook.Worksheets("TabelleX")    'hier den konkreten Namen einsetzen
Set pvT = pvtWs.PivotTables("Pivot-Fehlerliste")
With Worksheets("Stammdaten Controller").Range("I1:I2")
j = .Cells(.Rows.Count, 9).End(xlUp).Row
With Worksheets("Auswertung Pivot")
For I = 1 To j
pvtWs.Select    'wichtig wegen anschließendem Selection.Copy
pvT.PivotFields("Controller (SAP)").ClearAllFilters
pvT.PivotFields("Controller (SAP)").CurrentPage = _
Sheets("Stammdaten Controller").Cells(I, 9).Value
'Hinweis: wahrscheinlich den Filter refreshen
'den Datenbereich des Pivot-Filters kann man auch ohne Selektieren herausbekommen,
'dafür stellt Vba für die Pivottabelle eigene Eigenschaften bereit
pvtWs.Range("A4", pvtWs.Range("a4").End(xlDown)).Select
Selection.Copy
Sheets("Transfer Outlook").Select
Range("D3").Select
Selection.PasteSpecial Paste:=xlPasteAllMergingConditionalFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Call AutoMail
Next I
End With
End With
Set pvT = Nothing: Set pvtWs = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Automatischer Filter in Pivot
11.11.2019 20:10:07
Nils
Hallo Luschi,
erstmal danke für deine Antwort und deinen Rat! Ich fass mir grad an den Kopf, weil die Lösung so offensichtlich ist, ich es aber nicht gesehen habe...
Mit deinem Code/Lösung kommt auch der Fehler nicht mehr! Jetzt muss ich nur noch das refreshen des Filter programmieren und alles sollte passen!
Danke dir für die Hilfe und eine schöne Woche!
Gruß
Nils

136 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige