|
Wanneer je als VBA
programmeur code schrijft, komt het bijna nooit voor dat het
programma regel voor regel tot het einde doorloopt. Er zullen altijd
situaties zijn waarbij sommige regels moeten worden overgeslagen, of
waarbij een bepaalde procedure één of meerdere keren moet worden
herhaald. Dit aspect van programmeren noemt men
Controlling code
execution. Om dit uitvoeren van de programmacode gecontroleerd te
kunnen later verlopen, kun je
Loops
gebruiken. Looping is het proces waarbij een aantal regels code
wordt herhaald en is een fundamenteel aspect van elke
programmeertaal.
Er zijn verschillende
soorten
Loops.
Dit voorbeeld behandelt de
For... Next
variant.
De essentie van een
For... Next
loop is dat elke instructie in de Loop (in principe) meerdere keren
wordt uitgevoerd. De syntax van
deze loop is als volgt.
For Counter = Start to
End [Step StepValue]
Instructions
[Exit
For]
[Instructions]
Next [Counter]
!!
Tekst tussen [ ]
betekent dat deze onderdelen van de Loop optioneel zijn.
Alle instructies tussen
For
en Next
worden meerdere keren uitgevoerd. Het aantal keren dat deze
instructies worden uitgevoerd, hangt af van de waarde die de variabele
Counter
heeft (Start to
End) en of de
Loop vroegtijdig moet worden afgebroken (Exit
For) omdat er aan
een bepaalde uitzondering wordt voldaan. De optie
Step StepValue
geeft je de mogelijkheid om een Loop te doorlopen waarbij je de code
alleen bij elke
5e
(Step 5),
of elke
10e
(Step 10)
waarde van de variabele
Counter
uitvoert.
De procedure hieronder
verduidelijkt de
For... Next Loop.
Het werkboek waar dit voorbeeld instaat, kun je hier
downloaden.
Option Explicit
Private Sub cbFor_Next_Click()
Dim cRecData As Integer
For cRecData = 10 To 359
If Cells(cRecData, 3) > 5000 Then
With Cells(cRecData,
3)
.Interior.Color = RGB(192, 0, 0)
.Font.Color = RGB(255, 255, 255)
End With
End If
If Cells(cRecData, 3) = 0 Then
Cells(cRecData,
3).Select
Exit For
End If
Next cRecData
If cRecData > 359 Then
Cells(10, 2).Select
End If
End Sub
De bovenstaande procedure,
die wordt uitgevoerd als op de knop
cbFor_Next
wordt geklikt, werkt als
volgt.
•
De
For... Next
loop voert een aantal instructies uit als de variabele
cRecData
de waarde 10
t/m 359
heeft
•
Als de waarde in een
bepaalde rij van kolom C (cRecData,
3) groter is dan
5000,
wordt de achtergrondkleur en de kleur van het lettertype aangepast
•
Als de waarde in een
bepaalde rij van kolom C (cRecData,
3)
0
is, wordt de betreffende cel geselecteerd (Cells(cRecData,
3).Select)
en de loop
afgebroken (Exit
For)
•
Als de variabele
cRecData
groter is dan 359 (en de Loop dus helemaal doorlopen is), wordt de
eerste cel in de database geselecteerd.
|