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

Autofilter met VBA

Status
Niet open voor verdere reacties.

Gijsbert1

Gebruiker
Lid geworden
7 apr 2016
Berichten
986
Beste mensen,

In een database met een kolom waarin percentages staan(variërend van 0% t/m 250%), probeer ik met VBA een filteropdracht uit te voeren.
De macro-opdracht moet een criteria bevatten die gelijk is aan of groter dan een waarde die ingevuld staat in cel Q1.

Nu gebruik ik de volgende code:

Code:
Dim TijdOverschrijding As Integer

TijdOverschrijding = Range("Q1").Value
ActiveSheet.Range("$B$4:$AA$8089").AutoFilter Field:=25, Criteria1:=">=" & TijdOverschrijding

In Q1 staat 0,15 ingevuld dus na uitvoering van de macro zou hij alle regels moeten tonen die gelijk zijn aan of hoger zijn dan 15%, echter: Excel filtert nu alles weg en de database wordt blanco.

Wie kan mij verder helpen?
 
Gijsbert,

welkom op Helpmij.nl!

Neem met de macrorecorder een op dat je het filter met de hand instelt. Je ziet dan waarschijnlijk direct wat er aan de hand is.
Post anders even een voorbeeld excelbestandje
 
Beste Haije,

Heb een voorbeeld bestandje gemaakt:
Bekijk bijlage 266119

Met de recorder kies ik op het filter:
Getalfilter--->Is groter dan of gelijk aan--->0,15
dan komt het volgende in VBA:
Code:
ActiveSheet.Range("$C$2:$E$10").AutoFilter Field:=3, Criteria1:=">=0,15", _
        Operator:=xlAnd
Het gekke is dat deze macro niet werkt als je hem uitvoert!
Dus heb een 2e macro gemaakt en de waarde ">=0,15" veranderd in ">=15%".
Code:
ActiveSheet.Range("$C$2:$E$10").AutoFilter Field:=3, Criteria1:=">=15%"
Dit werkt wel!

Nu wil ik dus met de ingevulde waarde in cel A1 via macro hierop filteren.
Dat zou er volgens mij zou uit kunnen zien:
Code:
Dim TijdOverschrijding As Integer
TijdOverschrijding = Range("A1").Value
ActiveSheet.Range("$C$2:$E$10").AutoFilter Field:=3, Criteria1:=">=" & TijdOverschrijding

Het is de bedoeling dat wanneer dit gelukt is, dat de waarde van A1 wordt vervangen door een ingevulde waarde in een tekstvak uit een vba formulier.
Dat is dus de reden om een variabele aan te maken en dan op deze manier in een filter te gebruiken, alleen lijkt dit niet te werken!

Ik hoop dat mijn vraag nu wat duidelijker is?

Groetjes, Gijs
 
Het gaat natuurlijk niet werken als je van TijdOverschrijding een integer maakt;)

Probeer het zo eens.

Code:
Sub VenA()
    Range("$C$2:$E$10").AutoFilter 3, ">=" & Format([A1], "0,00%")
End Sub
 
Laatst bewerkt:
Dit werkt ook:

ActiveSheet.Range("$C$2:$E$10").AutoFilter 3, ">=0.15"
 
Bedankt voor de reacties.

Het is gelukt met de code van VenA ! :D

Het was uiteindelijk de bedoeling dat de waarde middels een VBA formulier werd ingevuld en de waarde in cel A1 niet meer nodig heb.
vandaar dat ik met een integer variabele probeerde, haha! Amateur die ik ben.....:o
Het is dus gelukt met de volgende code:
Code:
Range("$C$2:$E$10").AutoFilter 3, ">=" & Format(TextBox1.Value * 10, "0,00%")
Bekijk bijlage 266149

Bedankt. :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan