2e functie toevoegen voor autofilter

  • Onderwerp starter Onderwerp starter ZZ1
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ZZ1

Gebruiker
Lid geworden
21 jul 2009
Berichten
116
Hallo,

Zie het bijgevoegde bestandje.
Hierin wil en met de eerste 2 zoekknoppen de lijst verkleinen naar de tekst HR2 of HR40.
Daarna wil ik met de overige 3 zoekknoppen hem nog meer verkleinen naar de tekst HR2 - MOM1 of HR2 - MOM2 enz. maar hoe is de code om het aangepaste autofilter van de vorige keer te onthouden deze is hierbij variabel maar ik mij prijslijst is deze nog groter.

Wie kan mij helpen?? :D:D
 

Bijlagen

Laatst bewerkt:
Ik zie dat we niet veel reacties komen, ik weet niet of je ondertussen al een oplossing gevonden heb?
In de bijlage heb ik een oplossing die niet heel fraai is maar wel goed werkt.
Als je voor elke groep waarop je wil filteren een (verborgen) kolom toevoegt met een kopie van de eerste kolom en vervolgens per groep filtert in een andere kolom kan je dus met elk toegevoegde argument de lijst verkleinen.

Heb je hier wat aan?

Groet Karel
 

Bijlagen

Hallo,

Deze prijslijst gaat naar klanten dus liever heb ik geen verborgen kolommen iedergeval bedankt voor het meedenken!!

Volgens mij moet het lukken met een loop maar hier heb ik nog nooit mee gewerkt.

Kan iemand mij eventueel opweg helpen? Of heeft iemand een andere oplossing?

Alvast bedankt!

(Gelukkig is een probleem geen probleem maar een uitdaging)
 
Hier is geteste code:

Code:
Sub FilterToepassen()
    Range("A9").AutoFilter Field:=1, Criteria1:="=*" & [A1] & "*"
End Sub
Private Sub CommandButton2_Click()
    [A1] = "HR2"
    FilterToepassen
End Sub

Private Sub CommandButton3_Click()
    [A1] = "HR40"
    FilterToepassen
End Sub

Private Sub CommandButton4_Click()
    If InStr([A1], "*") Then [A1] = Left([A1], InStr([A1], "*") - 1) & "*MOM1" Else [A1] = [A1] & "*MOM1"
    FilterToepassen
End Sub

Private Sub CommandButton5_Click()
    If InStr([A1], "*") Then [A1] = Left([A1], InStr([A1], "*") - 1) & "*MOM2" Else [A1] = [A1] & "*MOM2"
    FilterToepassen
End Sub

Private Sub CommandButton6_Click()
    If InStr([A1], "*") Then [A1] = Left([A1], InStr([A1], "*") - 1) & "*NST" Else [A1] = [A1] & "*NST"
    FilterToepassen
End Sub
 
En als je de lijst functionaliteit niet meer gebruikt, en wel een gewone Autofilter, dan is dit meer generieke code:

Code:
Function sHoofdCriterium() As String
    sHoofdCriterium = ActiveSheet.AutoFilter.Filters(1).Criteria1
    If InStr(sHoofdCriterium, " - ") Then
        sHoofdCriterium = Mid(sHoofdCriterium, 3, InStr(sHoofdCriterium, " - ") - 3)
    Else
        sHoofdCriterium = Mid(sHoofdCriterium, 3, Len(sHoofdCriterium) - 3)
    End If
End Function
Sub FilterToepassen(s As String)
    Range("A9").AutoFilter 1, "*" & s & "*"
End Sub
Private Sub CommandButton2_Click()
    Call FilterToepassen("HR2")
End Sub
Private Sub CommandButton3_Click()
    Call FilterToepassen("HR40")
End Sub
Private Sub CommandButton4_Click()
    Call FilterToepassen(sHoofdCriterium & " - " & "MOM1")
End Sub
Private Sub CommandButton5_Click()
    Call FilterToepassen(sHoofdCriterium & " - " & "MOM2")
End Sub
Private Sub CommandButton6_Click()
    Call FilterToepassen(sHoofdCriterium & " - " & "NST")
End Sub

Met Lijst-functionaliteit zal je de code wat moeten aanpassen.

Wigi
 
Beste Wigi,

Onze klanten zullen de autofilter nog wel toepassen.
Mijn prijslijst heeft een range van A30 t/m A1000.

Als je deze filters gebruik verklein je de zoekgroote en kun je nog met een autofilter de afmeting zoeken wat je wilt.

Ik zal dit binnenkort in de praktijk toepassen!!
Je zal vast reactie van mij ontvangen!

Alvast heel erg bedankt!! :D :D
 
Beste Wigi,

Ik heb de code aangepast met je eerste voorbeeld.
Maar hij past de autofilter wel aan zoals je ziet maar hij zet geen filter in, rara hoe kan dat??

Als je bij HR2 en HR40 ook deze code wilt hebben maar anders om, moet je dan dat van A1 enzo veranderen??

Alvast bedankt!
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan