• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Gefilterde velden in pivot table

Status
Niet open voor verdere reacties.

linkav

Gebruiker
Lid geworden
13 jun 2007
Berichten
465
Beste,

Met onderstaande code wil ik de waarden te weten komen waarop gefilterd is in een pivottable. Dit gaat goed zolang ik voor een veld meer dan 1 waarde selecteer (vink dan ook 'select multiple items' aan). Selecteer ik slechts 1 waarde (zonder 'select multiple items' aan te vinken) krijg ik geen resultaat terug. Vink ik daarentegen select multiple items' aan en selecteer ik dan toch maar 1 waarde, krijg ik wel een waarde terug.

Wat kan de oorzaak hiervan zijn? Hoe kan ik dit oplossen?


Code:
    For Each pvt_field In Worksheets(Par_Pivotsheet).PivotTables(Par_Pivot).PivotFields
        If pvt_field.Orientation = 1 Or _
            pvt_field.Orientation = 2 Or _
            pvt_field.Orientation = 3 Or pvt_field.CubeField.CubeFieldType = xlHierarchy Then '1 = rijveld  // 2 = Kolomveld // 3 = filter veld // 4 = [Measures].[# Subscribers]
            pvt_field_name = pvt_field.Name
            
           [COLOR="#FF0000"][B][COLOR="#FF0000"] Filter = Workbooks(gblWorkbookName).Sheets(Par_Pivotsheet).PivotTables(Par_Pivot).PivotFields(pvt_field_name).VisibleItemsList[/COLOR][/B][/COLOR]
            
            If Filter(1) <> "" Then
                If UBound(Filter) > 1 Then
                    For I = 1 To UBound(Filter)
                        If I = 1 Then
                            statement_field = "{" & Filter(I) & ","
                        ElseIf I = UBound(Filter) Then
                            statement_field = statement_field & Filter(I) & "}"
                        Else
                            statement_field = statement_field & Filter(I) & ","
                        End If
                    Next
                ElseIf UBound(Filter) = 1 Then
                    statement_field = "{" & Filter(1) & "}"
                End If
                ws.Cells(LRow, 1).Value = pvt_field.Name
                ws.Cells(LRow, 2).Value = pvt_field.Orientation
                ws.Cells(LRow, 3).Value = statement_field
                ws.Cells(LRow, 4).Value = Par_Pivotsheet
                RowTo = LRow
                LRow = LRow + 1
            End If
        End If
    Next pvt_field
 
Gokje: Bij 1 veld zonder select multiple items krijg je geen Array maar een String terug,

Ik zou overigens jouw array Filter een andere naam geven aangezien Filter al standaard voorkomt in VBA
 
Beste Eric,

Bedankt voor uw reactie...

Maar hoe kan ik dit dan oplossen?
 
Beste Ric,

In plaats van "Filter" heb ik overal al een andere naam gekozen.
 
Je werkt met OLAP zie ik, als mijn gok juist was:
probeer eens ipv de rode regel, ik heb Filter zFilter genoemd:
Code:
Select Case TypeName(Workbooks(gblWorkbookName).Sheets(Par_Pivotsheet).PivotTables(Par_Pivot).PivotFields(pvt_field_name).VisibleItemsList)
Case "Variant()"
zFilter = Workbooks(gblWorkbookName).Sheets(Par_Pivotsheet).PivotTables(Par_Pivot).PivotFields(pvt_field_name).VisibleItemsList
Case Else
ReDim zFilter(1)
zFilter(1) = Workbooks(gblWorkbookName).Sheets(Par_Pivotsheet).PivotTables(Par_Pivot).PivotFields(pvt_field_name).VisibleItemsList
End Select
 
Beste Eric,

Spijtig genoeg werkt het niet correct. De code komt nooit in de case else-sectie..

Ik werk inderdaad met OLAP..
 
Loop eens door jouw 'oude' code met F8 wat is de waarde van Filter? (wanneer het niet goed gaat) En welke Type heeft het? Bestaat het uit Filter(0) en Filter(1)?

wellicht een printscreentje?
 
Dit bestandje hoort bij jouw vraag?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan