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

Uitgebreid filter automatisch verversen

Status
Niet open voor verdere reacties.

Moondust76

Gebruiker
Lid geworden
17 okt 2013
Berichten
22
Ik heb een sheet met veel data waarop ik een uitgebreid filter heb toegepast. De criteria hiervoor worden via een formule bepaald. Als ik ergens een bepaalde waarde uit een vervolgkeuzelijst kies veranderen de criteria. Echter, zodra de criteria veranderen moet ook het uitgebreide filter weer opnieuw worden toegepast. Ik wil graag dat dat automatisch gebeurt.

Zie bijgevoegd bestand als voorbeeld wat lijkt op wat ik wil. Hier wordt de volgende code gebruikt.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 3 And Target.Column = 3 Then
'calculate criteria cell in case calculation mode is manual
  Worksheets("ProductsList").Range("G2").Calculate
  Worksheets("ProductsList").Range("Database") _
    .AdvancedFilter Action:=xlFilterCopy, _
      CriteriaRange:=Sheets("ProductsList").Range("G1:G2"), _
      CopyToRange:=Range("A6:D6"), Unique:=False
End If
End Sub

Deze code wil ik graag toepassen op mijn eigen sheet, maar snap niet wat ik eraan moet aanpassen om het werkend te krijgen. In mijn sheet zijn er b.v. 2 criteria ipv 1. How doe je dat dan met de targets? En in dit voorbeeld wordt via het uitgebreide filter een kopie gemaakt van de lijst. Ik wil gewoon de originele lijst filteren.

Wie kan hierbij helpen?
 

Bijlagen

Laatst bewerkt:
Kijk eens in de hulpbestanden van de VEditor, lemma 'advancedfilter'.
 
Ik begrijp hoe ik het advancedfilter moet toepassen in VBA, denk ik.

Code:
Range("Database").AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=Range("Criteria"), _
Unique:=False

Waar ik nu nog mee zit zijn de randvoorwaarden. Zo moet de betreffende macro alleen geactiveerd worden als er verandering is in de twee criteria. Dus geen worksheet_change bijvoorbeeld. Welk event moet ik hiervoor nemen en hoe verwijs ik naar de twee criteria? Ik neem aan dat ik een If statement moet gebruiken, maar hoe doe je dat in VBA voor twee criteria? Zijn er voorts nog commando's die ik moet gebruiken om de boel goed te laten draaien?
 
Laatst bewerkt:
Ik zit nu op onderstaand spoor.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Selectiecriteria As Range
    Set Selectiecriteria = Range("A2:B2")
    If Not Application.Intersect(Selectiecriteria, Range(Target.Address)) _
    	Is Nothing Then
            Sub ShowAllRecords()
                If ActiveSheet.FilterMode Then
                    ActiveSheet.ShowAllData
                End If
            End Sub
            Range("Database").AdvancedFilter _
            Action:=xlFilterInPlace, _
            CriteriaRange:=Range("Criteria"), _
            Unique:=False
    End If
End Sub

De gedachte is dat als een van de twee criteria (A2 of B2) wijzigen, dat dan eerst een toegepast filter ongedaan wordt gemaakt en daarna het uitgebreide filter op basis van de nieuwe waarden wordt toegepast. Deze volgorde doe ik zo, omdat excel uren staat te rekenen als ik een filter toepas als er al een filter actief is. Klopt bovenstaande code een beetje zo?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan