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

Autofilters op meerdere werkbladen terugzetten bij openen werkboek

Status
Niet open voor verdere reacties.

Ivanhoes

Gebruiker
Lid geworden
6 jun 2015
Berichten
67
Hoi mensen,


Ik kom er weer eens niet uit.
Ik zoek een vba-code, die op alle tabbladen die er in de werkmap zijn, de autofilters weer
terugzet op "Alles selecteren". Dit moet pas gebeuren bij het openen van de werkmap,
zodat men tijdens het werken niet elke keer weer zou moeten filteren.

De code ActiveSheet.ShowAllData werkt nu niet in combinatie met Private Sub Workbook_Open.
Logisch, want er is maar 1 actieve sheet? De rest is niet-actief, en die moeten ook naar "Alles selecteren".
Verder maak ik ook nog eens gebruik van beveiligde tabbladen.

Ik hoop dat iemand mij kan helpen.

Alvast bedankt en groetjes,

Ivanhoes.
 
Deze zou toch moeten de klus klaren in een Open_Event:

Code:
For Each WS In ActiveWorkbook.Worksheets
     With WS
        If WS.AutoFilterMode Then
            If WS.FilterMode Then WS.ShowAllData
        End If
    End With
Next
 
Hoi Cobbe,

Bedankt voor de reactie en bedankt voor de code!

Na een korte test, kreeg ik deze foutmelding:
"Fout 1004 tijdens uitvoering. Methode ShowAllData van klasse Worksheet is mislukt."

Dit gebeurt de hele tijd. Ik heb geen idee hoe dit komt. De volledige code in Workbook Open die ik gebruik is de volgende:

PHP:
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
        Worksheets("Personeel").Range("B2").Select
        ActiveWindow.SmallScroll Down:=-700
        
    For Each WS In ActiveWorkbook.Worksheets
      With WS
        If WS.AutoFilterMode Then
        If WS.FilterMode Then WS.ShowAllData
      End If
    End With
Next
    Application.ScreenUpdating = True
End Sub

Misschien dat ik ergens een fout gemaakt heb?

Alvast bedankt voor je hulp alweer.

Groetjes,

Ivanhoes.
 
Datligt aan de bladbeveiliging, je kan dat oplossen dmv zo'n constructie:

Code:
If WS.ProtectContents Then WS.Unprotect
code......
WS.Protect
 
Hoi Cobbe,

Nogmaals bedankt voor je reactie. Ik kon helaas niet eerder reageren.

Ik kom er toch niet helemaal uit. Ik heb jou oplossing er bij gedaan. Ik ben een leek op het gebied van vba.
Dit is wat ik er van heb gemaakt:

Code:
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
        Worksheets("Personeel").Range("B2").Select
        ActiveWindow.SmallScroll Down:=-700
        
    If WS.ProtectContents Then WS.Unprotect
    code "1234"
                   
      For Each WS In ActiveWorkbook.Worksheets
        With WS
          If WS.AutoFilterMode Then
          If WS.FilterMode Then WS.ShowAllData
    End If
        End With
    Next        
    WS.Protect
        
    Application.ScreenUpdating = True
End Sub

Nu krijg ik echter de foutcode: Compileerfout in verborgen module.
Deze fout wordt niet geel geaccentueerd en daarom kan ik ook niet zien waar de fout zit.

Voor de duidelijkheid nog even:
Ik gebruik meerdere tabbladen, soms wel en soms niet met autofilters. Elk tabblad is
ook nog eens beveiligd met verschillende wachtwoorden. Ik wil dus bereiken dat alle, behalve
die van de verborgen draaitabellen(!), autofilters op :"Alles selecteren" komen te staan,
waar zo´n autofilter ook staat. En ongeacht of er binnen het autofilter wel of niet iets geselecteerd staat.

Nou...nogmaals bedankt voor je vorige reacties en hopelijk kun je me nog een keer helpen.

Groetjes,

Ivanhoes.
 
Doe hier eens de test mee:

Code:
Private Sub Workbook_Open()
 Application.ScreenUpdating = False
    For Each WS In ActiveWorkbook.Worksheets
       With WS
          If .ProtectContents Then .Unprotect "1234"
          If .AutoFilterMode Then
            If .FilterMode Then .ShowAllData
           .Protect "1234"
       End With
    Next
 Application.ScreenUpdating = True
End Sub
 
Hoi Cobbe,

Alweer bedankt voor je reactie! Hier heb ik wat aan, ook al heb ik nog niet gekeken.

Morgen ga ik er mee aan de gang, dan hoor je van me. Nu moet ik helaas werken.

Groetjes,

Ivanhoes.
 
Zoals beloofd zou ik nog terug komen op de nieuwe code.

Helaas Cobbe.....ik krijg nog steeds de foutcode: Compileerfout in verborgen module....

Uiteindelijk ben ik via een omweg ook terecht gekomen, daar waar ik wilde:
Namelijk alle autofilters in mijn hele map (dat zijn 4 tabbladen van de 200) weer terug zetten op
"Alles selecteren".

In het kort in oplopende volgorde:
- Activeren een van de tabbladen met een autofilter (in dit geval eerst Personeel)
- Beveiliging van dat tabblad verwijderen.
- Autofilter weer terug zetten op "Alles Selecteren" .
- Bij fouten gewoon doorgaan met uitvoeren van de rest van de code.
- Beveiliging terug plaatsen.

- Activeer volgende tabblad met autofilter (in dit geval Personen)
- Beveiliging van dat tabblad verwijderen
- etc
- etc

Dit is de code:

Code:
Private Sub Workbook_Open()
    Application.ScreenUpdating = False   
        Worksheets("Personeel").Activate
            On Error Resume Next
                Worksheets("Personeel").Unprotect Password:="1234"
                ActiveSheet.ShowAllData
            On Error GoTo 0
        Worksheets("Personeel").Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
        Worksheets("Personeel").EnableSelection = xlNoRestrictions
        
        Worksheets("Personen").Activate
            On Error Resume Next
                Worksheets("Personen").Unprotect Password:="5678"
                ActiveSheet.ShowAllData
            On Error GoTo 0
        Worksheets("Personen").Protect Password:="5678", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
        Worksheets("Personen").EnableSelection = xlNoRestrictions
  Application.ScreenUpdating = True
End sub

Een kortere code zoals Cobbe voorstelde is ongetwijfeld mogelijk. Maar helaas krijg ik toch steeds foutmeldingen.
Met bovenstaande vba-code heb ik nog geen foutmeldingen gehad.

Hoe dan ook: Cobbe bedankt voor je reacties! Dankzij jouw eerder opgegeven codes ben ik verder gekomen.

Groetjes,

Ivanhoes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan