Excel, Aanpassen Autofilter



Tip & Truc met betrekking tot het aanpassen van het Autofilter binnen Excel.

 
"Autofilter" is een krachtig hulpmiddel binnen Excel om in een lijst met gegevens te zoeken. Wel wordt er binnen Excel bij de filtering uitgegaan van een aaneengesloten lijst. Wil je echter ten behoeve van de layout tussen de te filteren kolommen een extra dummykolom opnemen dan loop je tegen een probleem op. Ook de dummykolommen krijgen een dropdownpijl. Dit is iets wat je niet zou willen. Voor de oplossing is een macro vereist en enige kennis van VBA gewenst.

In een onderhanden project komt de volgende situatie voor (zie afbeelding hieronder)


Aanpassen autofilter_1

Bij het definiƫren van een autofilter in het bereik C13:G13, wordt door Autofilter ook de lege dummykolommen verondersteld kolommen te zijn waarop gezocht moet kunnen worden. Dit kan op de volgende manier worden vermeden:

Maak in VBA de volgende macro: (N.B. Pas voor het gebruik in eigen situatie het bereik aan !)


Public Sub VerBergDropDownAutoFilter()
' Verbergt de dropdownpijlen voor autofilter.
' Let bij eigen gebruik wel op het bereik waarin de autofilter gedefinieerd is

Dim c As Range
Dim i As Integer
Dim rng As Range

Set rng = Range("C13:G13")
i = rng.Cells(1, 1).Column - 1

For Each c In rng

Select Case c.Address
Case "$D$13", "$F$13"
c.AutoFilter Field:=c.Column - i, _
Visibledropdown:=False
Case Else
c.AutoFilter Field:=c.Column - i, _
Visibledropdown:=True
End Select

Next

End Sub

Na het uitvoeren van bovenstaande macro in Excel zag het scherm met gebruikmaking van AutoFilter er als volgt uit. De onnodige dropdownpijlen zijn verdwenen.
Aanpassen autofilter_2

PS. Het aanzetten van Autofilter doe je - na het selecteren van een kolom bereik -

In Excel 2003 -> Data -> Filter - Autofilter
In Excel 2007 -> Gegevens -> Filter

Het maken, bewerken en uitvoeren van een macro vindt je onder:

In Excel 2003 -> Extra -> Macro -> Macro's
In Excel 2007 -> Ontwikkelaars -> Macro's



Heb je nog vragen, neem dan gerust contact met ons op.