2016-03-29 7 views
0

Ich habe ein Arbeitsblatt mit mehreren Pivot-Tabellen. Alle Pivot-Tabellen sind auf die gleiche Weise formatiert.Name der aktiven Pivot-Tabelle

Wie verschiebe ich mehrere Felder in Werte mit VBA für aktive Pivot-Tabelle im Arbeitsblatt?

Ich habe versucht, ein Makro aufzuzeichnen, um die Felder auf Werte zu verschieben, aber den Pivot-Tabellennamen im VBA-Code manuell ändern zu müssen, wenn ich das Makro für eine andere Pivot-Tabelle verwenden möchte. Ich möchte vermeiden, den Pivot-Tabellennamen manuell eingeben zu müssen.

Sie können in der Bildschirmaufnahme sehen, ich ziehe den "Wert" in der Feldliste manuell in den Bereich "WERTE" für jede der Pivot-Tabellen.

Es ist eine sich wiederholende Aufgabe, die ich mit VBA automatisieren möchte, aber jede der Pivot-Tabellen hat eindeutige Namen.

Excel Screen Capture

+0

Bitte erläutern „bewegen Felder auf Werte“, ist es nicht wirklich Sinn machen ... – vacip

+0

Was Sie als „aktiv“ Pivot-Tabelle definieren? –

+0

Im Wesentlichen möchte ich dieselben Felder für jede Pivot-Tabelle über VBA in den Wertebereich verschieben. "Aktiv" bedeutet die aktive Zelle in der Pivot-Tabelle. Mit anderen Worten: Ich habe auf eine Zelle in der Pivot-Tabelle geklickt, für die ich das Makro verwenden möchte, da mehrere Pivot-Tabellen in einem einzelnen Arbeitsblatt vorhanden sind. – roncruiser

Antwort

0

Siehe http://peltiertech.com/referencing-pivot-table-ranges-in-vba/ für einen guten Überblick darüber, wie die verschiedenen Teile einer Pivot-Tabelle zu adressieren.

Dies sollte Ihnen den Einstieg:

Sub Tester() 

    Dim pt As PivotTable 

    Set pt = ActivePivotTable 

    If pt Is Nothing Then 
     Debug.Print "No Active pivot table" 
    Else 
     Debug.Print "Active = " & pt.Name 
     'work on pt... 
    End If 

End Sub 

'get the pivot table which contains the current selection 
Function ActivePivotTable() As PivotTable 
    Dim pt As PivotTable, rv 
    For Each pt In ActiveSheet.PivotTables 
     Debug.Print pt.Name, pt.TableRange2.Address 
     If Not Intersect(Selection, pt.TableRange2) Is Nothing Then 
      Set ActivePivotTable = pt 
      Exit Function 
     End If 
    Next pt 
End Function 
+0

Danke Tim ... Es war genug, um mich tatsächlich zu starten! – roncruiser