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

Opgelost Reser slicer alleen voor 1 tabbladf

Dit topic is als opgelost gemarkeerd

Jurgen2807

Gebruiker
Lid geworden
27 jul 2011
Berichten
152
Dag allen,

Ik heb een vraag. Ik heb een groot bestand gemaakt waar op diverse tabbladen slicers staan.

Nu heb ik een formulierbesturingselement toegevoegd met een Macro erachter. Echter als ik op de knop reset filters klik, dan worden de filters van alle tabbladen gereset. Zie bijlage als voorbeeld.

Ik wil graag een besturingselement waar alleen de slicers gereset worden van de pagina waarop het besturingselement staat.

Wie kan mij helpen?

Code die ik heb gevonden is. In die code wordt ook verwezen naar het gehele Excel werkboek. Graag jullie hulp:

Public Sub Reset_filters()
' Rest_filters
Application.ScreenUpdating = False 'Switch off screen updating for performance
' Declare single Slicer Cache type variable
Dim cache As SlicerCache
' Cycle through each cache in whole Excel workbook and clear any manual filter applied
For Each cache In ActiveWorkbook.SlicerCaches
cache.ClearManualFilter
Next cache
ActiveSheet.Range("D20").Select
' Switch back on screen updating
Application.ScreenUpdating = True
End Sub
 

Bijlagen

Wijzig ActiveWorkbook in Activesheet.
 
Maak er dan dit van:
Code:
Public Sub Reset_filters()
    Dim slcr As SlicerCache
    Dim slc As Slicer
    
    Application.ScreenUpdating = False
    
    For Each slcr In ActiveWorkbook.SlicerCaches
        For Each slc In slcr.Slicers
           If slc.Shape.Parent Is ActiveSheet Then
              If slcr.FilterCleared = False Then
                 slcr.ClearManualFilter
                 Exit For
              End If
           End If
        Next slc
    Next slcr
    
    Application.ScreenUpdating = True
End Sub
 
Maak er dan dit van:
Code:
Public Sub Reset_filters()
    Dim slcr As SlicerCache
    Dim slc As Slicer
   
    Application.ScreenUpdating = False
   
    For Each slcr In ActiveWorkbook.SlicerCaches
        For Each slc In slcr.Slicers
           If slc.Shape.Parent Is ActiveSheet Then
              If slcr.FilterCleared = False Then
                 slcr.ClearManualFilter
                 Exit For
              End If
           End If
        Next slc
    Next slcr
   
    Application.ScreenUpdating = True
End Sub
En deze werkt perfect. Dank voor je hulp. Wordt enorm gewaardeerd.
 
Terug
Bovenaan Onderaan