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

Macro laten controleren op actief autofilter.

Status
Niet open voor verdere reacties.

Paradoxx

Gebruiker
Lid geworden
2 nov 2007
Berichten
135
Goedendag weer,

In een excelbestand waarin de uren van de werknemers worden geimporteerd in een totaaloverzicht (een tabel), wil ik graag dat de macro die dan loopt, voordat hij de waarden toevoegt aan de totaaltabel, controleert of er een autofilter actief is.
Wanneer dit namelijk het geval is word de geïmporteerde data toegevoegd onder de laatst getoonde cel, en daarmee kan er dus data overschreven worden.
Ik weet dat je met ShowAllData het autofilter kan resetten, maar als alles al getoond wordt, dan kan de macro niet verder. Ik heb een vermoeden dat ik het in een If... Then.. Else moet vatten, alleen weet ik niet hoe ik moet controleren of het autofilter actief is of niet.

Zou iemand me op weg kunnen helpen door de code te geven voor het controleren op een actief autofilter.

Alvast hartelijk bedankt.
 
Je kunt erachter komen of het filter aan staat met:
If ActiveSheet.AutoFilterMode = True

En de tegenhanger:
If ActiveSheet.AutoFilterMode = False
 
Hallo Edmoor,

allereerst bedankt voor de reactie.

Wanneer ik je code ?ActiveSheet.AutoFilterMode = true even in Direct venster test, is de terugkomende waarde altijd Onwaar. Dus in beide gevallen, gefilterd en ongefilterd, geeft hij waarde Onwaar terug.

Ik moet controleren of de tabel op een waarde is gefilterd of niet. Wanneer gefilterd op een bepaalde waarde moet er dus ActiveSheet.ShowAllData worden uitgevoerd, wanneer er niet wordt gefilterd, dus alles al zichtbaar is, moet de macro gewoon verder gaan.

Het is vast te simpel om te bedenken, maar ik kom er even niet uit.
 
Dan moet je dat per ListObject controleren:
Code:
Sub TestFilter()
    Dim Lst As ListObject

    Set Lst = ActiveSheet.ListObjects(1)
    If Lst.AutoFilter.FilterMode Then
        MsgBox "Filter is aan"
    Else
        MsgBox "Filter is uit"
    End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan