Herhalen met For Each Next


Korte samenvatting

In deze video leer ik je om relevante (VBA) code kort en krachtig te herhalen met For Each Next. Door de commando’s For Each en Next te gebruiken, voorkom je dat je relevante code meermaals kopieert en plakt. Dat zou de macro onnodig lang maken.

Bij For Each Next is de herhaling van (VBA) code gebaseerd op objecten, die onderdeel uitmaken van een verzameling. Stel je voor, je hebt een vaas met 25 knikkers. Dit noemen we de verzameling. Elke individuele knikker in die verzameling, noemen we een object. Nu wil je al die 25 knikkers gaan oppoetsen. Met For Each Next pak je als het ware elke knikker één voor één uit de verzameling, en laat je er de oppoets-code op los. Net zolang totdat alle knikkers opgepoetst zijn.

De standaard opbouw voor het herhalen van code met de commando’s For Each en Next, ziet er als volgt uit. Hierbij vertegenwoordigt de variabele (hier: mijnCel) het individuele object uit een grotere verzameling (hier: Range(“A1:J10”), een verzameling van 100 cellen).

Dim mijnCel As Range

For Each mijnCel In Range("A1:J10")
     Code die je wilt herhalen
Next mijnCel

Je begint dus met het aanmaken van een variabele waarmee je het individuele object aanduidt. Dat kan een cel zijn (type = Range), maar bijvoorbeeld ook een tabel (type = ListObject) of werkblad (type = Worksheet). Vervolgens start je met het For Each commando en geef je aan dat je elk object in de verzameling wilt bekijken. De naam van de verzameling zet je achter ‘in’. Daarna type je de te herhalen code en sluit je af met het Next commando. Met dit commando wordt vastgesteld of alle objecten in de verzameling al bekeken zijn. Zo nee, dan voert Excel de te herhalen code nogmaals uit. Zo ja, dan eindigt de For Each Next lus en gaat Excel verder met de rest van de macro.

Bekijk de video en leer in 11 minuten om code te herhalen met For Each Next. Het bestand dat ik in de video gebruik, staat onderaan deze blog. Je mag het gratis downloaden voor eigen gebruik.

Onderwerpen

In deze video bespreek ik de volgende onderwerpen:

  • For Each … Next
  • Dim … As Range
  • Dim … As Worksheet
  • Dim … As ListObject
  • Interior.ColorIndex (object en eigenschap)
  • TableStyle (eigenschap)