Avatar billede mfynbo Juniormester
07. februar 2017 - 08:12 Der er 11 kommentarer

Macro til at resette udvalgte slicers.. kun dem der er aktiveret

Hej Eksperter,

Nedenstående macro er langsom, da den resetter alle mine slicers!
Jeg vil gerne have macroen til kun at resette de slicers, der er aktiveret.

Det må være noget med if aktiveret, så skal du resette eller lad sliceren være. men ved ikke hvordan jeg kobler det på nedenstående.

Nogen der kan hjælpe?
Hilsen Morten


Sub reset_filters()
    ActiveWorkbook.SlicerCaches("Slicer_Chain").ClearManualFilter
    ActiveWorkbook.SlicerCaches("Slicer_RegionMarketTree").ClearManualFilter
    ActiveWorkbook.SlicerCaches("Slicer_Channel").ClearManualFilter
    ActiveWorkbook.SlicerCaches("Slicer_Hierarchy").ClearManualFilter
    ActiveWorkbook.SlicerCaches("Slicer_Company").ClearManualFilter
    ActiveWorkbook.SlicerCaches("Slicer_Item_Group_tree").ClearManualFilter
    ActiveWorkbook.SlicerCaches("Slicer_Fin_Department").ClearManualFilter
End Sub
Avatar billede excelent Ekspert
07. februar 2017 - 09:19 #1
Prøv:

Sub ClearSlicer()
For Each sc In ActiveWorkbook.SlicerCaches
If sc.FilterCleared = False Then sc.ClearManualFilter
Next
End Sub
Avatar billede mfynbo Juniormester
07. februar 2017 - 09:34 #2
takker.
Har dog et par filtre, som ikke skal cleares.. de skal blive.
Kan du komme omkring det?
Avatar billede excelent Ekspert
07. februar 2017 - 10:31 #3
Sub ClearSlicer()
For Each sc In ActiveWorkbook.SlicerCaches
If sc.Name <> "Udsnit_xxx" And sc.Name <> "Udsnit_yyy" Then
If sc.FilterCleared = False Then sc.ClearManualFilter
End If
Next
End Sub

ret xxx og yyy til aktuel
Avatar billede mfynbo Juniormester
07. februar 2017 - 13:52 #4
Hej, mange tak. Har lavet koden som nedenfor, men den kører ikke.
Kan du se, hvad jeg gør forkert?

Sub ClearSlicer()
For Each sc In ActiveWorkbook.SlicerCaches
If sc.Name <> "Slicer_Chain" And sc.Name <> "Slicer_RegionMarketTree" And sc.Name <> "Slicer_Channel" And sc.Name <> "Slicer_Hierarchy" And sc.Name <> "Slicer_Company" And sc.Name <> "Slicer_Item_Group_tree" And sc.Name <> "Slicer_Fin_Department" Then
If sc.FilterCleared = False Then sc.ClearManualFilter
End If
Next
End Sub
Avatar billede excelent Ekspert
07. februar 2017 - 14:57 #5
Nej det ser rigtig ud
Prøv lige at tilføje som linje 2:  msgbox sc.name
så kan vi lige teste om det er Udsnit_xxx eller Slicer_xxx eller noget helt andet

koden kan stoppes med ctrl+break
Avatar billede mfynbo Juniormester
07. februar 2017 - 15:15 #6
hej, den kører igennem slicers.. og skriver slicer_.. men den tager også slicers, som jeg ikke har defineret.. det er der den går galt.. kan den kun tage dem jeg skriver efter if..?
bh
m
Avatar billede excelent Ekspert
07. februar 2017 - 15:44 #7
De slicers du skriver efter IF i tråd #4  skal de ryddes eller skal de ikke ?
Hvis de ikke skal, hvilke skal så ?
Avatar billede mfynbo Juniormester
07. februar 2017 - 16:35 #8
Hej, dem jeg nævner skal ryddes, hvis der er valgt filter til
Grunden til at den ik bare skal nulstille alle er at funktionen bliver langsom
Avatar billede excelent Ekspert
07. februar 2017 - 17:50 #9
Koden rydder IKKE slicers som er uden filter samt de slicers der er nævnt i koden herunder


Sub ClearSlicer()
For Each sc In ActiveWorkbook.SlicerCaches
'følgende slicers resettes ikke
If sc.FilterCleared = False And sc.Name <> "Slicer_v1" _
And sc.Name <> "Slicer_v2" And sc.Name <> "Slicer_v3" Then sc.ClearManualFilter
Next
End Sub


Du skal altså blot udskifte Slicer_v1 og Slicer_v2 og Slicer_v3 med dine navne
Hvis du har flere eller færre end de 3 nævnte, så skal du tilrette koden til aktuel
Avatar billede mfynbo Juniormester
08. februar 2017 - 09:36 #10
Hej det virker, mange tak.
Du ved vel ikke hvordan man slår extern data fra (olap cube) og til igen.
Vil gerne gøre dette i forbindelse med kørslen, da forbindelsen sænker hastigheden betragtelig?
bh
m.
Avatar billede excelent Ekspert
08. februar 2017 - 09:52 #11
Nej men prøv at starte makro optager
slå så extern data fra og til igen mens optager kører
Det burde give en ide om hvordan

ellers indsæt den optagede kode her så kikker jeg på det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester