2016-07-28 27 views
1

Ich suche Ihre Hilfe mit folgendem Fehler.Laufzeitfehler '1004' Pivot-Tabellenfehler

Ich habe einige VBA-Code, der eine Arbeitsmappe öffnet und in einem Blatt mit einer Pivot-Tabelle kopiert.

Der Code wählt dann die Pivot-Tabelle aus, filtert nach Datum und kopiert einige Felder heraus.

Diese Funktionalität funktioniert perfekt beim ersten Mal. Wenn jedoch dieser Bericht mehr als einmal an einem Tag verwendet wird, trifft es die folgenden Fehler:

enter image description here

Das Problem ist mit der Zuordnung der Pivot-Tabelle Namen, da die VBA nur Systemstandardwerte verwendet. Der Code lautet wie folgt:

Gibt es eine alternative Möglichkeit, die Pivot-Tabelle unabhängig vom Namen dynamisch auszuwählen?

Oder gibt es Code, um den Verlauf am Ende der Ausführung zu löschen, so dass jedes Mal, wenn der Bericht ausgeführt wird, Pivot 1?

Jede Hilfe würde sehr geschätzt werden.

Vielen Dank im Voraus

+0

Wenn es immer 1 Pivot geben wird, dann '.PivotTables (1)' vielleicht? –

Antwort

2

Wenn Sie wissen, dass es nur eine Pivot-Tabelle sein wird (wie es Sie in Ihrem Beitrag haben sollten scheint vermitteln, obwohl ich dies hat misinterpretted kann), ist es besser, den Index zu verwenden als der Name, da der Name unterschiedlich ist, wenn die neue Pivot-Tabelle erstellt wurde, während eine andere existierte. Ändern Sie Ihren Anruf:

If Sheets("Sheet1").PivotTables.Count <> 0 Then 
    Sheets("Sheet1").PivotTables(1).PivotFields("Date ").AutoSort xlDescending, "Date " 
End If 

Hinweis I entfernt auch die „Select“ nicht verwenden, da dies für eine variety of reasons schlechte Praxis betrachtet wird.

+1

Sie schlagen mich dazu: D –

+1

@SiddhartRout stolzeste Tag meines Lebens: P – RGA

Verwandte Themen