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

advanced filter vba

Status
Niet open voor verdere reacties.

Samsung6713

Gebruiker
Lid geworden
24 dec 2019
Berichten
209
Goedemiddag,

Ik heb een datalijst met data van 1 week.
Nu heb ik een macro gemaakt die de data door middel van advanced filter kopieert naar tabbladen per dag.
Nu wil ik deze data op het tabblad per dag verder uitsorteren.
Echter ik krijg een foutmelding bij het sorteren.
Als ik in het tabblad sta waar de data heen gaat werkt het prima, maar als ik niet in dat tabblad ben krijg ik fout

dit is mijn code
Code:
Private Sub Worksheet_Calculate()
    ThisWorkbook.Worksheets("Maandag").Cells.ClearContents
    Dim rgdata1 As Range, rgcriteria1 As Range, rgOutput1 As Range
    Set rgdata1 = ThisWorkbook.Worksheets("hulptabblad").Range("A1").CurrentRegion
    Set rgcriteria1 = ThisWorkbook.Worksheets("datums").Range("A1").CurrentRegion
    Set rgOutput1 = ThisWorkbook.Worksheets("Maandag").Range("A1")
    rgdata1.AdvancedFilter xlFilterCopy, rgcriteria1, rgOutput1
    thisworkbook.worksheets("Maandag").Range("B1").CurrentRegion.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlYes
end sub

Hoe krijg ik het werkend als ik niet in tabblad maandag sta.
 
Als je op een ander tabblad staat is de Currentregion natuurlijk ook op dat tabblad en niet op het tabblad dat je wil bewerken...
Je moet je range dus echt gaan definiëren ipv. de currentregion te gebruiken...
 
Code:
Sub M_snb()
  ThisWorkbook.sheets("Maandag").usedrange.ClearContents

  with ThisWorkbook
    .sheets("hulptabblad").cells(1).CurrentRegion.AdvancedFilter 2,.sheets("datums").cells(1).CurrentRegion,.sheets("Maandag").cells(1)
    with .sheets("Maandag")
      .cells(1).CurrentRegion.Sort .cells(1,3),,,,,,,xlYes
    end with
  end with
end sub

Ik zou daar geen calculate-gebeurtenis voor gebruiken.
 
Laatst bewerkt:
De fout zat niet in currentregion, maar in de keyrange, daar had ik geen worksheet geselecteerd.

@ snb, waarom geen calculate event?
 
dan wordt de macro veel te vaak uitgevoerd.
 
Oke, op zich is dat ook de bedoeling.
Als ik iets invul dan moet het live gekopieert worden.
De data word per week aangemaakt en blijft relatief klein, dus verwacht er geen problemen mee.
 
Ik loop nu tegen een volgende probleem aan.

De gegevens worden ingevuld in een tabel, nu gebruik ik een hulptabblad om de gegevens naar te kopiëren om daarna het advanced filter te kunnen gebruiken.

Alleen als ik nu een regel toevoeg in de tabel worden deze gegevens natuurlijk niet gekopieerd in het hulptabblad.

Wat zou een alternatieve manier zijn om gegevens uit een tabel te kopieren naar meerdere tabbladen op basis van datum en daar per tabblad verder te sorteren?
 

Bijlagen

  • 15-4 helpmij.xlsm
    13 KB · Weergaven: 26
Laatst bewerkt:
Dan hoef je de macro ook maar 1 keer per week te laten draaien.

De gegevens worden ingevuld in een tabel, nu gebruik ik een hulptabblad om de gegevens naar te kopiëren om daarna het advanced filter te kunnen gebruiken.

Dat lijken me twee overbodige stappen.
 
Met ophalen en transformeren gemaakt. Tabel op eerste blad aanvullen, dan op Gegevens, Alles vernieuwen klikken.
 

Bijlagen

  • 15-4 helpmij.xlsm
    32,5 KB · Weergaven: 36
Goedemiddag,
ik heb het goed werkend gekregen met ophalen en transformeren.
Nu wil ik de querytabellen automatisch updaten.
Bij het selectionchange event gebeurt het net wat te veel.
Is er een manier om het updaten te laten uitvoeren bij veranderen van rij?
 
Al eens naar het Workbook_SheetActivate Event gekeken?
 
Of het deactivate event achter het werkblad met de brondata wellicht.
 
Ik heb het bestand open in 2 vensters op 2 verschillende schermen.
Hierbij is het de bedoeling dat de data die ingevoerd word in het ene tabblad live bijgewerkt word naar het andere tabblad.

Het eerste tabblad is een lijst met orders ingevoerd op volgorde van binnenkomst, hier staat alles dus rommelig door elkaar heen.
Het tweede tabblad sorteert het uit per dag en verder op nog een aantal filters om het overzichtelijk te maken.

Er word dus geen worksheet geactiveerd of gedeactiveerd.
Nu is het refreshen van de query's bij iedere selectiechange overbodig traag, maar ik wil het wel na iedere nieuwe regel refreshen.
Het refreshen duurt niet heel erg lang, en voor mij acceptabel als het alleen gebeurt bij het naar een nieuwe regel gaan.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan