Filteren tijdens typen

Als je veel data hebt kan het filteren wel eens niet snel werken omdat je pas kunt zoeken als je weer op OK hebt geklikt.
Je kunt nu een filter maken die gaat zoeken terwijl je nog bezig bent met het typen.

Resultaat bij filteren tijdens typen

Vooraf is het handig om te weten hoe je het Ontwikkelaars tabblad krijgt en hoe je een macro toevoegt.

Stap 1

Als eerste maak je een tabel. Ik gebruik in dit voorbeeld een tabel met alle landnamen.
Eerst type je de gegevens en dan ga je via het lint en dan Invoegen > Tabel de tabel aanmaken.

Vervolgens selecteer je de tabel en ga je op het lint naar tabblad Ontwerpen. Hier kies je vervolgens de tabelnaam.

De macro filteren tijdens het typen.

Stap 2

Hier gaan we een ActiveX besturingselement aanmaken. Mijn voorkeur heeft hier om dit boven de tabel te zetten. Ik zet mijn tabel dus 3 regels naar onder.

Het ActiveX besturingselement dat we gaan maken is het tekstvak. Deze kan nu mooi boven je tabel.
Je kunt dit toevoegen via het lint en dan tabblad Ontwikkelaars hier kan je Invoegen kiezen en dan tekstvak.

De macro filteren tijdens het typen.

Stap 3

Hier gaan we de eigenschappen van het tekstvak veranderen.
Klik met je rechtermuisknop op het tekstvak en selecteer Eigenschappen
Hier kan je de LinkedCell invullen. Kies hier voor een lege cel. Ik heb hier gekozen voor C1.
De macro filteren tijdens het typen.

Stap 4

De filter moet werken telkens als er iets wijzigt in het tekstvak wat je net hebt aangemaakt. Dit gaan we nu doen.

Klik met je rechtermuisknop op het tekstvak en selecteer Programmacode weergeven.
De VBA-editor opent en er wordt automatisch een change-event aangemaakt voor het juiste tekstvak (Private Sub TextBox1_Change()).
Zet hier de volgende code bij:

ActiveSheet.ListObjects("Landen").Range.AutoFilter Field:=1, Criteria1:="*" & [C1] & "*", Operator:=xlFilterValues

Landen is hierbij de tabelnaam die gekozen is en C1 is de lege cel die is ingevuld bij de LinkedCell. Pas dit aan als je andere waarden gebruikt.
De volledige code is dus:

Private Sub TextBox1_Change()
ActiveSheet.ListObjects("Landen").Range.AutoFilter Field:=1, Criteria1:="*" & [C1] & "*", Operator:=xlFilterValues
End Sub

Hierna kan je de VBA-editor sluiten en op het lint op het tabblad Ontwikkelaars en klikken op Ontwerpmodus, hiermee wordt deze uitgezet.

Resultaat

Het resultaat is dat je nu kunt filteren tijdens het typen.
De macro filteren tijdens het typen.
Om het mooier te maken kan je de tekstkleur van cel c1 nog wit maken.

Optioneel

Je kunt er ook nog een reset knop bijmaken. Deze maakt dan de tekstbox weer leeg.

We openen weer de VBA editor van de tekstbox. Hier zetten we de volgende code:

Sub Filter()
[C1] = ""
ActiveSheet.ListObjects("Landen").Range.AutoFilter _
Field:=1
End Sub

Verander hier C1 ook weer in je eigen keuze.

We sluiten de VBA editor opnieuw en voegen nogmaals een ActiveX besturingselement in. Ditmaal kiezen we voor de Knop. Kies bij het aanmaken de macro Filter hierbij.

Nu kun je het ingevulde met een druk op de knop resetten.
De macro filteren tijdens het typen.

Leave a Comment

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *