• 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.

Draaitabel filter dmv macro

Status
Niet open voor verdere reacties.

genexxa

Gebruiker
Lid geworden
26 aug 2008
Berichten
70
Wie kan mij helpen?

Ik wil een draaitabel filteren dmv een macro.

In cel C3 staat het weeknummer
Daar achter de action button.

Ik wil dat wanneer ik in C3 een week getal invul, de filter in het draaitabel dit weeknummer filtert.

Ik ben begonnen maar kom er niet uit.
Wie kan de code aanpassen zodat deze werkt?

PS. de rede dat ik op deze manier wil filteren is, omdat ik meerdere draaitabellen tegelijk wil filteren naar dezelfde week.
 

Bijlagen

  • voorbeeld.xlsm
    19,1 KB · Weergaven: 32
Code:
Sub Draaitabelfilter()
    Dim b As Boolean, filterwaarde As String
    filterwaarde = Sheets("blad1").Range("C3").Value
    b = Len(filterwaarde)
    With ActiveSheet.PivotTables("Draaitabel1").PivotFields("week")
        If b Then
            Err.Clear
            On Error Resume Next
            .PivotItems(filterwaarde).Visible = True 'die eerst op true zetten, zodat er altijd minstens 1 true blijft !!!!
            If Err.Number Then MsgBox "je waarde klopt niet, geen element binnen pivotitems", vbCritical: End
        End If
        For Each it In .PivotItems
            it.Visible = (it = filterwaarde) Or Not b
        Next
    End With

End Sub
 
als meerdere = allemaal
Code:
Sub Draaitabelfilter()
    Dim b As Boolean, filterwaarde As String
    
    With Sheets("blad1")
        filterwaarde = .Range("C3").Value
        b = Len(filterwaarde)
        For Each pvt In .PivotTables
            With pvt.PivotFields("week")
            If b Then
                Err.Clear
                On Error Resume Next
                .PivotItems(filterwaarde).Visible = True             'die eerst op true zetten, zodat er altijd minstens 1 true blijft !!!!
                If Err.Number Then MsgBox "je waarde klopt niet, geen element binnen pivotitems", vbCritical: End
               On Error GoTo 0
          End If
            For Each it In .PivotItems
                it.Visible = (it = filterwaarde) Or Not b
            Next
            End With
        Next
    End With

End Sub

variant met enkele draaitabellen
Code:
Sub Draaitabelfilter()
    Dim b As Boolean, filterwaarde As String

    With Sheets("blad1")
        filterwaarde = .Range("C3").Value
        b = Len(filterwaarde)
        For Each pvt In Array("Draaitabel1", "Draaitabel2")          'opsomming van die draaitabellen
            With .PivotTables(pvt).PivotFields("week")
                If b Then
                    Err.Clear
                    On Error Resume Next
                    .PivotItems(filterwaarde).Visible = True         'die eerst op true zetten, zodat er altijd minstens 1 true blijft !!!!
                    If Err.Number Then MsgBox "je waarde klopt niet, geen element binnen pivotitems van " & pvt, vbCritical: End
                   On Error GoTo 0                
               End If
                For Each it In .PivotItems
                    it.Visible = (it = filterwaarde) Or Not b
                Next
            End With
        Next
    End With

End Sub
 
Laatst bewerkt:
Top,

Dank je, het werkt perfect!
 
Laatst bewerkt door een moderator:
@genexxa,

Iets minder perfect is het negeren van een moderatorverzoek in een persoonlijk bericht over het gebruik van code tags.
 
Mijn excuus, ik lees het nu.
Zal er in vervolg op letten.
Ik heb het geprobeerd aan te passen maar dat lukte mij niet.
Nogmaals sorry snb
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan