Hullp bij macro excel - for loop

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Dagobert1
  • Registratie: Februari 2017
  • Laatst online: 11-10 18:32
Kunnen jullie meehelpen hoe ik een macro in Excel een volgende cel kan genereren?
Ik ben nog heel nieuw in VBA, maar kom er helaas niet uit dus hopelijk kunnen jullie mij op weg helpen.

Ik heb een bestand met een klant, een bedrag en een manager. Zie afbeelding.
Ik wil iedere manager een bestand sturen met zijn klantenlijst. Daarvoor heb ik een macro die filtert op manager en die gegevens kopieert naar een apart tabblad.
<En een andere macro die die tabbladen los opslaat zodat ik ze kan sturen.>
En ik heb een tabel met de namen van de managers en de namen van de tabbladen.

Nu wil ik dat de macro filtert op cel H2 (klaas) en dat in tabblad I2 (Klaas) neerzet.
En dan filtert op H3 en dat in I3. zet etc.

Maar die laatste stap lukt me niet.

Afbeeldingslocatie: https://tweakers.net/i/qoe8xclRSpaErY0w1ehHozSIF0Y=/800x/filters:strip_exif()/f/image/j5n2bTDXCjRlYDmahAPXpWwQ.png?f=fotoalbum_large


----

Sub Nieuwtabloop()

For i = 1 To ThisWorkbook.Sheets("Input").Range("H2:I3").End(xlUp).Row
Selection.AutoFilter

' hoe maak ik van Criteria1:=Range("H2") een loop naar H3, etc)
ActiveSheet.Range("$A:$C").AutoFilter Field:=3, Criteria1:=Range("H" & i + 1).Value
Columns("A:C").Select
Range("C1").Activate
Selection.Copy
' hoe maak ik van Criteria1:=Range("I2") een loop naar I3, etc)
Sheets(Range("I" & i + 1).Value).Select
Range("A1").Select
ActiveSheet.Paste
Cells.EntireColumn.AutoFit
Sheets("Input").Select
ActiveSheet.ShowAllData

Next i


End Sub

[ Voor 10% gewijzigd door Dagobert1 op 11-10-2025 01:27 ]

Beste antwoord (via Dagobert1 op 11-10-2025 18:21)


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
F_J_K schreef op zaterdag 11 oktober 2025 @ 10:26:
Met FOR kan je alle regels langs lopen.
En dan zul je zien dat
ThisWorkbook.Sheets("Input").Range("H2:I3").End(xlUp).Row
gelijk is aan 1, dus de loop komt niet verder dan 1.

Alle reacties


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Ik zou niet de optische filter-functie gebruiken. De user raakt zo enige eigen filters kwijt. Maar in VBA elke regel langs lopen en daar controleren of het voldoet aan je criteria.

Met FOR kan je alle regels langs lopen.
offtopic:
Sowieso nooit .select, .copy., .paste gebruiken. Tenzij je per se wilt dat de gebruiker dat zo ziet en het expliciet de bedoeling is dat de eigen klembord-data kwijt raakt.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • SCIxX
  • Registratie: Augustus 2002
  • Laatst online: 20:51
Heb je het ChatGPT al gevraagd? Is erg goed met deze dingen.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
F_J_K schreef op zaterdag 11 oktober 2025 @ 10:26:
Met FOR kan je alle regels langs lopen.
En dan zul je zien dat
ThisWorkbook.Sheets("Input").Range("H2:I3").End(xlUp).Row
gelijk is aan 1, dus de loop komt niet verder dan 1.

Acties:
  • 0 Henk 'm!

  • Dagobert1
  • Registratie: Februari 2017
  • Laatst online: 11-10 18:32
dix-neuf schreef op zaterdag 11 oktober 2025 @ 11:11:
[...]
En dan zul je zien dat
ThisWorkbook.Sheets("Input").Range("H2:I3").End(xlUp).Row
gelijk is aan 1, dus de loop komt niet verder dan 1.
Dat was inderdaad de oplossing.

Ik heb nu in K1 een formule: Aantal.arg gezet die het aantal managers telt.
En dan de code aangepast naar:

For i = 1 To Sheets("Input").Range("K1").Value

Bedankt.

Acties:
  • 0 Henk 'm!

  • Dagobert1
  • Registratie: Februari 2017
  • Laatst online: 11-10 18:32
F_J_K schreef op zaterdag 11 oktober 2025 @ 10:26:
Ik zou niet de optische filter-functie gebruiken. De user raakt zo enige eigen filters kwijt. Maar in VBA elke regel langs lopen en daar controleren of het voldoet aan je criteria.

Met FOR kan je alle regels langs lopen.
offtopic:
Sowieso nooit .select, .copy., .paste gebruiken. Tenzij je per se wilt dat de gebruiker dat zo ziet en het expliciet de bedoeling is dat de eigen klembord-data kwijt raakt.
Dank voor het meedenken.

Het zijn nu letterlijk de stappen die ik voorheen handmatig deed met dit bestand.
Filteren, knippen plakken naar nieuw tabblad, Tabblad opslaan als.
Het zal vast niet de schoonheidsprijs winnen, maar als ik het zo opschrijf snap ik ook wat de code doet / kan ik dat uitleggen,

Maar dit is wel een stukje van Excel waar ik wat meer over moet gaan leren, want dit biedt wel weer allerlei mooie mogelijkheden die ik niet kende.
Pagina: 1