Je hebt een tabel met veel informatie en je wilt snel kunnen filteren zonder te veel te moeten klikken. Dan is het mooi als je direct een invoerveld hebt om je zoekopdracht te starten.
Tabel filteren
Als je in een Excel tabel wilt filteren op een gedeeltelijke waarde dan moet je het filter open klikken en kun je typen in het invoerveld. Je klikt op OK en je hebt gefilterd. In onderstaand voorbeeld filteren we in een kolom met opslagcapaciteit van telefoons op de waarde “32”. We willen alle telefoons filteren die een opslagcapaciteit hebben van o.a. 32 GB.
Bij het filteren op 1 waarde is dat nog wel te doen. Maar als je het filter wilt toepassen op meerdere kolommen dan moet je veel klikken. Daarom is het handig om deze invoervelden direct in je werkblad te plaatsen zodat je snel op meerdere waarden filteren tijdens het typen.
Om dit voorbeeld te maken, maken we gebruik van het tabblad “Ontwikkelaars” in het lint. Als deze niet beschikbaar is, dan rechts-klik je op het lint en selecteer je “Het lint aanpassen…“. Zorg dat het hoofdtabblad “Ontwikkelaars” is aangevinkt en klik op OK.
Stap voor stap: Tabel filteren instellen tijdens typen
Benodigde tijd: 8 minuten
- Filteren op merk
Schrijf in cel B2 “Merk:“
Ga in het lint naar tabblad “Ontwikkelaars“. Klik op “Invoegen” bij “Besturingselementen” en selecteer “Tekstvak“. Er verschijnt een plusje waarmee een tekstvak kunt tekenen. Na het tekenen kun je het tekstvak selecteren en verslepen. Versleep het tekstvak ongeveer over cel C2.
Let op: Je kunt een besturingselement alleen bewerken als “Ontwerpmodus” is ingeschakeld in het lint “Ontwikkelaarsmodus“. - Eigenschappen besturingselement
Rechtsklik op het tekstvak en selecteer “Eigenschappen” in het dialoogvenster.
Zoek in de lijst met eigenschappen naar “LinkedCell” en voer hier C2 in. - VBA toevoegen voor tekstvak
Nu willen we dat het filter aanpast als we iets typen in het tekstvak. Dat doen door middel van een VBA code in te voeren. Rechtsklik op het tekstvak en klik op “Programmacode weergeven“. De VBA editor opent en er wordt automatisch een change-event aangemaakt voor dit tekstvak.
Private Sub TextBox1_Change()
End Sub
Wij voegen hier de volgende code tussen:
ActiveSheet.ListObjects(“telefoons”).Range.AutoFilter Field:=1, _
Criteria1:=”” & [C2] & ““, Operator:=xlFilterValues
De volledige code ziet er dus als volgt uit:
“telefoons” staat hier voor de tabelnaam.
“C2” staat gelijk aan de “LinkedCell” van stap 2.
“Field:=1” refereert naar filteren op kolom 1 van de tabel.
Schakel de ontwerpmodus uit in het lint “Ontwikkelaars” en test door te typen in het tekstvak. Je ziet nu dat de lijst direct filtert op wat je typt. - Reset knop toevoegen
Om je filter te wissen kun je een resetknop toevoegen. We gaan eerst de knop maken. Ga in het lint naar tabblad “Ontwikkelaars” en klik op “Invoegen” en selecteer de opdrachtknop. Er verschijnt een plusje op je scherm waarmee je de knop kunt tekenen.
- Reset knop aanpassen
Rechtsklik op de knop en selecteer “Opdrachtknop-object -> Bewerken“.
Verander de tekst van de knop naar RESET. - Macro toevoegen aan reset knop
We gaan nu een opdracht aan de knop toevoegen. Rechtsklik op de knop en klik op “Programmacode weergeven”. De VBA editor opent met de volgende code:
Private Sub CommandButton1_Click()
End Sub
We voegen de volgende code toe:
[C2] = “”
ActiveSheet.ShowAllData
TextBox1.Activate
De totale code ziet er dan als volgt uit:
[C2] = “” zorgt ervoor dat de cel C2 leeg wordt gemaakt. (linked cell uist stap 2)
ActiveSheet.ShowAllData wist alle filters op de tabel.
TextBox1.Activate zorgt dat het tekstvak weer is geselecteerd voor een volgende zoekopdracht. - Tweede filter toepassen op de tabel
We gaan nu een extra filter toevoegen voor de kolom Model.
Ga naar cel B4 en schrijf hier “Model:“. Ga in het lint naar tabblad “Ontwikkelaars“. Klik op “Invoegen” bij “Besturingselementen” en selecteer “Tekstvak“. teken een tweede tekstvak in cel C4. - Eigenschappen tweede tekstvak
Rechtsklik op het tweede tekstvak en selecteer “Eigenschappen” in het dialoogvenster.
Zoek in de lijst met eigenschappen naar “LinkedCell” en voer hier C4 in. - VBA toevoegen voor tweede tekstvak
Dubbel klik op het tekstvak of rechtsklik op het tekstvak en klik op “Programmacode weergeven“. De VBA editor opent en je ziet de volgende code staan:
Private Sub TextBox2_Change()
End Sub
Voeg hier de volgende code aan toe:
ActiveSheet.ListObjects(“telefoons”).Range.AutoFilter Field:=2, _
Criteria1:=”” & [C4] & “”, Operator:=xlFilterValues
“telefoons” staat hier voor de tabelnaam.
“C4” staat gelijk aan de “LinkedCell” van stap 8.
“Field:=2″ refereert naar filteren op kolom 2 (Model) van de tabel. - Reset knop aanpassen
Met het toevoegen van het tweede tekstveld moet ook de code voor de reset knop worden aangepast. Dubbelklik op de reset knop of rechtsklik en selecteer “Programmacode weergeven” om de VBA editor te openen.
We moeten nu ook cel C4 wissen tijden het resetten. De volledige code ziet er als volgt uit:
Eindresultaat tabel filteren
Je kunt zoveel tekst vakken en filters toevoegen als gewenst. In dit voorbeeld heb ik nog een derde tekst vak toegevoegd en gekoppeld aan kolom 8, Opslagcapaciteit.
Het eindresultaat ziet er als volgt uit:
Download bestand
Klik op de download link om het kant en klare bestand te downloaden.
tabel_filteren_tijdens_typen_met_VBA_final.xlsm