Als je met een macro en een variabele een dynamisch filter wilt maken waarbij je steeds de datum opgeeft waarop je wilt filteren heb je grote kans dat, hoewel je macro er goed uit ziet, deze als je hem draait niets
laat zien waar je wel resultaten verwacht.
Dit wordt waarschijnlijk veroorzaakt omdat je macro in de US datum notatie gaat zoeken (MM/dd/YYYY) waar wij de datum in dd/MM/YYYY hebben staan..
Download het voorbeeldbestand hier
Hieronder 2 voorbeelden van een dynamisch filter m.b.v. VBA, in het eerste filter gebruiken we een 'gewone' string als datum om de range
$A$1:$J$30" te filteren. Je zult zien dat de resultaten hiervan niet altijd zijn zoals je verwacht:
'Deze werkt alleen als je bijvoorbeeld 05-18-13 gebruikt als datum veld
Sub FoutiefFilterOpDatum()
'
Dim tmpdate As String
tmpdate = InputBox("Datum:", "Datum", "18-05-2013")
Selection.AutoFilter
ActiveSheet.Range("$A$1:$J$30").AutoFilter Field:=1, Operator:= _
xlFilterValues, Criteria2:=Array(2, tmpdate)
End Sub
Met de volgende VBA code zetten we de datum m.b.v. een eigen functie eerst om naar een seriële datum. Waarbij we Jaar, Maand en Dag uit de datum halen zodat deze altijd op de juiste volgorde vertaald worden!
'Dit filter op datum werkt altijd
Public Sub MaakDynamischFilter()
Dim nklantnaam As String
Dim ntmpdate As Long
Dim ntmpdatestring As String
nklantnaam = InputBox("Geef het klantnummer:", "Klantnummer", "29704")
ntmpdatestring = InputBox("Datum:", "Datum", "1-7-2013")
ntmpdate = CreateSerialDate(CDate(ntmpdatestring))
Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=nklantnaam
Selection.AutoFilter Field:=1, Criteria1:="<" & ntmpdate
Cells.Select
End Sub
'Functie om van een gewone datum een seriële datum te maken
Function CreateSerialDate(ndate As Date) As Long
Dim dDate As Date
Dim strDate As String
Dim lDate As Long
dDate = DateSerial(Year(ndate), Month(ndate), Day(ndate))
lDate = dDate
CreateSerialDate = lDate
End Function
Download het voorbeeldbestand hier
donderdag, 23 mei 2013 19:17
Dynamisch Filter op datum m.b.v macro geeft problemen?
Geschreven door Mike DoleAanvullende informatie
- Versies: Alle versies
Gepubliceerd in
Macro's en VBA
Nieuwste van Mike Dole
Log in om reacties te plaatsen