Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 2 van 2

Onderwerp: Macro om door verschillende slicers in Excel te gaan

  1. #1
    Junior Member
    Geregistreerd
    24 november 2022
    Vraag is niet opgelost

    Question Macro om door verschillende slicers in Excel te gaan

    Hallo

    ik ben redelijk onbekend met macro's in Excel, maar ben aan het leren terwijl ik werk.
    Mijn vraag draait rond een Excel met een draaitabel (omgezet in OLAP cubes) waaraan 35 verschillende slicers hangen (alle slicers hebben twee values, de naam van de slicer eigenlijk en (leeg)).
    Ik moet manueel elke slicer optie (niet de (leeg)) een PDF maken van het resultaat op de draaitabel. Daarna moet ik de slicer clearen, daarna de volgende slicer en dito optie aanklikken en hetzelfde doen.

    Ik wil dit dus automatiseren, en een PDF maken van een Excel-sheet heb ik al gemaakt, dat kan ik al. Het probleem zit hem in het doorlopen van de verschillende slicers en de sliceroptie die ik nodig heb.

    Als ik een macro opneem voor twee slicers krijg ik dit als resultaat:
    Code:
    ThisWorkbook.SlicerCaches("Slicer_All").VisibleSlicerItemsList = Array("[FiliaalOmzet].[All].&[All]")
    ThisWorkbook.SlicerCaches("Slicer_All").ClearManualFilter
    
    ThisWorkbook.SlicerCaches("Slicer_AllExSoi").VisibleSlicerItemsList = Array("[FiliaalOmzet].[AllExSoi].&[AllExSoi]")
    ThisWorkbook.SlicerCaches("Slicer_AllExSoi").ClearManualFilter
    Ik heb dus een loop nodig voor elke bestaande slicer en daarna een loop om door de gedefinieerde optie te gaan per slicer (voor elke slicer zal dit anders zijn)...

    Code:
    Sub slicers(slName As Variant)    Dim slItem As SlicerItem
        Dim slDummy As SlicerItem
        Dim slCache As SlicerCache
        Dim sl As Slicer
        Dim slItemsArray() As Variant  ' store values for matching SlicerItems in an Array
        ReDim slItemsArray(1 To 2)
        slItemsArray(1) = "[FiliaalOmzet].[All].&[All]"
        slItemsArray(2) = "[FiliaalOmzet].[AllExSoi].&[AllExSoi]"
    
    
        Set wb = ThisWorkbook
        Set slCache = wb.SlicerCaches(slName)
    
    
             For Each slvalue In slItemsArray ' Loop through the Array containing the values you want to use to match with SlicerItems
                 For Each slItem In slName.SlicerCache
                    sl.ClearManualFilter
                   For Each slDummy In sl.SlicerItems
                      slDummy.Selected = (slDummy.Name = slItem.Name)
                      If slItem.Name = slvalue.Name Then
                        MsgBox slvalue.Name ' do stuff here if the Selected SlicerItem matches the target value in your Array, otherwise it will move on to selecting next SlicerItem
                      End If
                   Next slDummy
                 Next slItem
            Next slvalue
    End Sub
    
    
    Sub slicerArray()
        Dim slArray As Variant ' store Slicer names in an Array
        ' Set slArray values here
            slArray = Array("Slicer_All", "Slicer_AllExSoi")
        For Each slName In slArray ' Loop through Array with Slicer Names and call Sub above for each
            Call slicers(slName)
        Next slName
    End Sub
    Ik heb dit reeds gevonden, maar zit vast aan de tweede For Each ...

    Iemand die me op weg kan helpen?

  2. #2
    Senior Member
    Geregistreerd
    1 juni 2022
    Ik heb zo het vermoeden dat je tot nu toe geen reacties hebt gekregen omdat een voorbeeldbestand ontbreekt.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren