Clever-Excel-Forum

Normale Version: VBA Auswahl in Pivotfilter
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich habe hier zwei Arbeitsblätter. Einmla Blatt "A" und einmal Blatt "B". 

In Blatt A stehen in Spalte 6 Zuordnungen untereinander in einer Liste. Über folgenden Code werden diese selektiert:

Code:
    Set dictCodes = CreateObject("scripting.dictionary")
     dictCodes("10") = "1"
     dictCodes("20") = "2"
     dictCodes("30") = "3"
     dictCodes("60") = "4"
     dictCodes("70") = "5"
     dictCodes("80") = "6"

Code:
    For Each k In dictCodes.Keys     
           Sheets("A").Select
            ActiveSheet.Range("$A$5:$Z$342").AutoFilter Field:=6, Criteria1:="<>" & k, Operator:=xlFilterValues
            Rows("6:6").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Delete Shift:=xlUp
            ActiveSheet.Range("$A$5:$Z$342").AutoFilter Field:=6
     Next k


In Blatt B gibt es die Zuordnungen auch - allerdings stehen sie nicht in einer Spalte untereinander, sondern in Zelle B1 in einem Pivotfilter. 

Logisch soll genau das Gleiche passieren wie bei Blatt A - ich weiß nur nicht, wie ich den Code umbauen muss.

Wenn ich den Pivotfilter mit dem Makroaufzeichner anspreche sieht das so aus:

Code:
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Company code").CurrentPage _
        = "10"



Kann mir bitte jemand helfen?
Hat niemand eine Idee?

Welche Informationen fehlen noch? 
Wäre es mit Beispieldatei einfacher?
Code:
    For Each k In dictCodes.Keys     
           Sheets("A").Select
            ActiveSheet.PivotTables("PivotTable1").PivotFields("Company code").CurrentPage _ ="<>" & k, Operator:=xlFilterValues
            Rows("6:6").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Delete Shift:=xlUp
            ActiveSheet.PivotTables("PivotTable1").PivotFields("Company code").CurrentPage _ ="<>" & k, Operator:=xlFilterValues
     Next k


So irgendwie? Tut aber nicht :(
Hi

Zitat:Wäre es mit Beispieldatei einfacher?

Wenn diese zeigt was vorliegt und was das Wunschergebnis ist.
Dann auf jeden Fall eventuell. :19:

Gruß Elex
Kommt  :05:
.. braucht aber ganz schön ...
Entschuldigt bitte die lange Zeit. 

Also kurze Erläuterung, was gemacht werden soll:

Es gibt ein Blatt "Data BBB" mit einer Liste von Werten. U.a. auch den "Company Code". 
Im Company Code stehen logischerweise mehrere Company Codes. 

Die einzige Aufgabe des Makros ist die, sequentiell einen Company Code nach dem Anderen zu selektieren und für jeden Company Code eine Datei abzuspeichern, in der nur die Daten des jeweiligen Companycodes sichtbar sind. 

Das funktioniert so auch einwandfrei. Er wählt in der Liste einen Company Code aus, speichert die Datei, nimmt den nächsten Comapny Code usw... bis er durch ist. 

Nun gibt es aber noch ein zweites Blatt, welches neu ist. Auf dem zweiten Blatt ist eine Pivot die auf das erste Blatt referenziert. 
Auch hier soll 1:1 das gleiche passieren. In der Datei, die erstellt wird soll auch das Blatt mit der Pivot mitgenommen werden, aber ebenfalls auf den entsprechenden Company Code selektiert werden. 
Da komme ich aktuell nicht weiter.

[attachment=32819]


Was noch zu berücksichtigen ist: Es gibt zwei Ausnahmen, bei denen zu einem Company Kürzel mehrere Company Codes gehören. Für das Data BBB Blatt wird das auch alles richtig berücksichtigt. Nur mit der Pivot komme ich nicht weiter.
Hi
 
Leider steige ich noch nicht durch was dir noch fehlt.
Dein Code erzeugt dir für jede Company eine Datei in der dann auch die Pivot enthalten ist. Wenn man eine Datei öffnet und die Pivot einmal aktualisiert hast du doch was du brauchst.
Oder nicht?


Gruß Elex
Ich bin so d*mm.... 

Er hat die Tabelle als Basis, die im neuen Blatt nur einen Company Code anzeigt - dementsprechend ist die Pivot "automatisch" schon gefiltert, weil es nur eine Möglichkeit gibt. 

Aber wie du sagst - man muss im neu erzeugten Blatt ein Mal die Pivot aktualisieren, damit im Filter auch nur noch ein Company Code angezeigt wird. 
Gibt es eine Möglichkeit die Datei so zu erzeugen, dass beim Start automatisch die Pivottabellen aktualisiert werden?

Ich kenne dieses "on start... pivot table..." aber das müsste ja dann in die neu erzeugte Datei als Makro.
Hi

Setze entweder in der Quelldatei in den Pivot Optionen -> Daten -> Aktualisieren beim Öffnen der Datei den Haken.

Oder nur im Code vor dem Speichern für die neue Datei die Zeile. (Sheet und Pivotnamen anpassen)
ActiveSheet.PivotTables("PivotTable1").PivotCache.RefreshOnFileOpen = True

Gruß Elex
Seiten: 1 2