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

Excel Filter m.b.v. Macro

Status
Niet open voor verdere reacties.

nlsat

Gebruiker
Lid geworden
29 aug 2007
Berichten
30
Goedendag,

In een Excel sheet maak ik gebruik van filters maar het telkens openen van de filter en het aanpassen van het criterium naar 'bevat' is wat lastig ik heb geprobeerd dit middels een macro op te lossen maar deze loopt vast (zie bijlage).

Heeft iemand een idee hoe ik m.b.v. een macro een filter op een kolom zet waarbij alleen het in een bepaalde cel opgegeven criterium als 'bevat' in de filter wordt meegenomen.

B.v.d.
nlst
 

Bijlagen

Dag Nisat

Zo doe je dat:

Code:
Sub autofilteren()

    With ActiveSheet
    
        .AutoFilterMode = False
        .Range("E7").AutoFilter
        
        With .AutoFilter.Range
        
            .AutoFilter Field:=5, Criteria1:="*" & .Parent.Range("F2").Value & "*"
            .AutoFilter Field:=6, Criteria1:="*" & .Parent.Range("F4").Value & "*"
        
        End With

    End With
    
End Sub

Wigi
 
Wigi, bedankt voor je reactie. Het gaat echter niet helemaal goed wanneer de velden in de kolommen leeg zijn. Het vullen van al deze lege cellen is een optie maar er komen steeds nieuwe bij dus lijkt mij geen oplossing.

Als ik de macro start zonder verdere criteria laat hij alle regels weg welke in de kolom omzet groep en/of stat.groep een leeg veld hebben. Ik heb geprobeerd het * te verwijderen maar dat geeft geen oplossing.

Heb je nog een idee hoe dit is op te lossen.

B.v.d.

nlsat
 
Is dit meer in de goede richting?

Code:
Private Sub CommandButton1_Click()

     With ActiveSheet
    
        .AutoFilterMode = False
        .Range("E7").AutoFilter
        
        With .AutoFilter.Range
            
            If Range("F2") = "" And Range("F4") = "" Then
                .AutoFilter Field:=5, Criteria1:="="
                .AutoFilter Field:=6, Criteria1:="="
            Else
                If Range("F4") = "" Then
                    .AutoFilter Field:=5, Criteria1:="*" & .Parent.Range("F2").Value & "*"
                Else
                    If Range("F2") = "" Then
                        .AutoFilter Field:=6, Criteria1:="*" & .Parent.Range("F4").Value & "*"
                    Else
                        .AutoFilter Field:=5, Criteria1:="*" & .Parent.Range("F2").Value & "*"
                        .AutoFilter Field:=6, Criteria1:="*" & .Parent.Range("F4").Value & "*"
                    End If
                End If
            End If
        
        End With

    End With

End Sub
 
Lijkt idd op mijn vraag

Maar euh

Heb die button opgebouwd met weinig sucses
Wil je mss het resultaat ook posten :confused:
 
Voor mij werkt het in ieder geval nu
Bedankt voor de hulp
 
Nog niet helemaal

Beste Brandts,

het werkt nog niet helemaal, ik zou graag willen dat wanneer de waarde in cel F2 en F4 leeg is het filter ALLES toont, dus niet alleen de lege cellen.

Het filter moet dus pas zijn werk doen als cel F2 en/of F4 een waarde bevat.

B.v.d.

nlsat
 
Code:
Private Sub CommandButton1_Click()

     With ActiveSheet
    
        .AutoFilterMode = False
        .Range("E7").AutoFilter
        
        With .AutoFilter.Range
            
            If Range("F2") = "" And Range("F4") = "" Then
                   [B][U]ActiveSheet.ShowAllData[/U][/B]
            Else
                If Range("F4") = "" Then
                    .AutoFilter Field:=5, Criteria1:="*" & .Parent.Range("F2").Value & "*"
                Else
                    If Range("F2") = "" Then
                        .AutoFilter Field:=6, Criteria1:="*" & .Parent.Range("F4").Value & "*"
                    Else
                        .AutoFilter Field:=5, Criteria1:="*" & .Parent.Range("F2").Value & "*"
                        .AutoFilter Field:=6, Criteria1:="*" & .Parent.Range("F4").Value & "*"
                    End If
                End If
            End If
        
        End With

    End With

End Sub
 
Macro loopt vast

Wigi,

de macro loopt vast op de regel 'ActiveSheet.ShowAllData'

enig idee wat er mis gaat?

B.v.d.

nlsat
 
Hang het bestandje nog eens bij, met daarin wat je krijgt als dat de fout zich voordoet.
 
Voilà

Code:
Private Sub CommandButton1_Click()

    With ActiveSheet

        .AutoFilterMode = False
        .Range("E7").AutoFilter

        With .AutoFilter.Range

            If Range("F2").Value <> "" Then
                .AutoFilter Field:=5, Criteria1:="*" & .Parent.Range("F2").Value & "*"
            End If
            
            If Range("F4").Value <> "" Then
                .AutoFilter Field:=6, Criteria1:="*" & .Parent.Range("F4").Value & "*"
            End If

        End With

    End With

End Sub

Wigi
 
Het werkt bedankt !!!

Wigi, bedankt voor je hulp, het werkt perfect.

nlsat
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan