2016-06-04 5 views
0

Manchmal, wenn ich VBA bin mit Pivot-Tabellen-Filter zu aktualisieren, verwende ich den CodeVerwendung von „(Alle)“ in Excel VBA

.CurrentPage = "(All)" 

Aber ich nur packte das Stück des Codes von jemand anderem ohne Verständnis . Was bedeutet die "(All)" hier?

Antwort

1

Die Option "(Alle)" in einem Berichtsfilter ist eine Standardoption.

Eine typische Routine zum Löschen des Berichtsfilterfelds wie folgt.

Sub ClearReportFiltering() 
'PURPOSE: How to clear the Report Filter field 
Dim pf As PivotField 
Set pf = ActiveSheet.PivotTables("PivotTable2").PivotFields("Fiscal_Year") 

'Option 1: Clear Out Any Previous Filtering 
    pf.ClearAllFilters 

'Option 2: Show All (remove filtering) 
    pf.CurrentPage = "(All)" 
End Sub 

Sie können nicht die (All) Option aus dem Dropdown-Liste Bericht Filters entfernen, aber Sie können die Programmierung verwenden, um Benutzer daran zu hindern, diese Option auswählen.

Das folgende Codebeispiel, das im Modul "OrderDates" gespeichert ist, kann die Änderung des Berichtsfilters rückgängig machen, wenn (Alle) ausgewählt ist oder wenn mehrere Elemente im Filter ausgewählt sind. Das Makro zeigt auch eine Warnmeldung - "Bitte wählen Sie ein einzelnes Datum."

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) 
Dim pf As PivotField 
On Error GoTo exit_Handler 


Application.EnableEvents = False 
Application.ScreenUpdating = False 


If ActiveSheet.Name = Me.Name Then 

    For Each pf In Target.PageFields 
     If pf.CurrentPage = "(All)" Then 
      Application.Undo 
      MsgBox "Please select a single date." 
     End If 
    Next pf 

    End If 

exit_Handler: 

    Set pf = Nothing 
    Application.EnableEvents = True 
    Application.ScreenUpdating = True 
End Sub 

Souce: „Kontexturen“

Wenn Sie ein Element aus einem Bericht Filters Dropdown-Liste auswählen, wird das PivotTableUpdate Ereignis ausgelöst hat. Der Code überprüft, ob der Eintrag (Alle) ausgewählt wurde. Wenn dies der Fall ist, macht der Code die Änderung des Berichtsfilters rückgängig und zeigt das zuvor ausgewählte Element an.

EDIT
Ein Punkt muss noch Ausarbeitung und das ist das Konzept der Pivot-Tabelle Nutzung ‚Seitenfelder‘. Die Seitenfelder dienen als semi-beliebige Tags in den Datenbereichen, die verwendet wurden. Wenn die Daten ad hoc gesammelt wurden und es verschiedene Gruppen gibt, die transformiert werden müssen, um die Analyse innerhalb dieser Gruppen durchzuführen, müssen die Seitenfelder definiert werden, um sie zu berücksichtigen. Wo sie wirklich nützlich sind, wenn Sie versuchen, die Gruppierungsfunktionen zu replizieren, die Sie in einer normalen Pivot-Tabelle erhalten können. Dies geschieht durch Verschieben der Seitenfelder aus dem Filterbereich und nach unten in den Zeilen- oder Spaltenbereich. Wenn Sie das in der Reihenfolge Page2, Page1 tun, erhalten Sie eine nette hierarchische Gruppierung. Snapshot showing Page fields in Filter Section Eine Antwort von @Byron Wall bei Superuser Titel Pivot table 'page fields' usage beschreibt das Konzept der Pivot Table Page Feld.