2017-03-24 1 views
0

Ich habe folgendes Pivot-Tabelle:PivotItem.Visible scheint immer wahr

Rowlables: - Shop - OrderID - Artikel

Columnlables: - Status

Wert Lables : - Menge

Über dem Drehpunkt habe ich eine Schneidemaschine für StoreGroup. Geben Sie für dieses Beispiel an, dass jeder Speicher entweder in der Gruppe A oder B ist und dass ich den Slicer so eingestellt habe, dass nur A angezeigt wird. 1 Bestellung existiert nicht in mehreren Geschäften.

In VBA möchte ich alle verbleibenden Aufträge durchlaufen. Hier ist mein Code:

Sub TEST() 
    Dim pvt as PivotTable 
    Set pvt = Sheets("Pivot").PivotTables("Orders") 

    Dim pvf as PivotField 
    Set pvf = pvt.PivotFields("OrderID") 

    Dim pvi as PivotItem 
    For Each pvi in pvf.PivotItems 
    If pvi.Visible = True Then 
     Debug.Print pvi.Value 
    End if 
    Next pvi 
End Sub 

Wenn ich diesen Code ausführen, werden alle vorhandenen OrderID die aufgelistet sind, auch solche mit StoreGroup B.

Meine Frage: Woher weiß ich, ob die Bestellung versteckt ist?

Antwort

0
Public Function ItemIsActive(pvtItem As PivotItem) As Boolean 
    On Error GoTo ErrHandler 
    ItemIsActive = Not pvtItem.DataRange.EntireRow.Hidden 
Exit Function 
ErrHandler: 
    ItemIsActive = False 
End Function 

Dieser Code prüft, ob die Datarange Reihe versteckt

+1

Bitte um eine Erklärung zu Ihrer Antwort hinzuzufügen. Vermeiden Sie das Posten von Nur-Code-Antworten ohne korrekte Beschreibung. –