È possibile utilizzare le istruzioni For...Next per eseguire un blocco di istruzioni un numero specifico di volte. Per i loop, utilizzare una variabile contatore il cui valore aumenta o diminuisce a ogni ripetizione del loop.
Nell'esempio seguente la routine denominata MyProc viene eseguita 50 volte. L'istruzione For specifica la variabile contatore x e i relativi valori iniziale e finale. L'istruzione Next incrementa la variabile contatore di 1.
Negli esempi seguenti viene illustrato l'uso del loop successivo For.
Esempio 1
Sub DoMyProc50Times()
Dim x
For x = 1 To 50
'This loop executes 50 times
Next
End Sub
La parola chiave Step consente di aumentare o diminuire la variabile del contatore in base al valore specificato. Nell'esempio seguente, la variabile contatore j viene incrementata di 2 a ogni ripetizione del loop. Se il ciclo è finito, il totale è la somma di 2, 4, 6, 8 e 10.
Esempio 2
Sub TwosTotal()
Dim j, total
total = 0
For j = 2 To 10 Step 2
total = total + j
Next
'The total is 30
End Sub
Per ridurre la variabile contatore, utilizzare un valore negativo per la parola chiave Step. È necessario specificare un valore finale minore del valore iniziale. Nell'esempio seguente, la variabile contatore myNum viene ridotta di 2 a ogni ripetizione del loop. Se il ciclo è finito, il totale è la somma di 16, 14, 12, 10, 8, 6, 4 e 2.
Esempio 3
Sub NewTotal()
Dim myNum, total
total = 0
For myNum = 16 To 2 Step -2
total = total + myNum
Next
'The total is 72
End Sub
È possibile chiudere qualsiasi istruzione For...Next prima che il contatore raggiunga il relativo valore finale utilizzando l'istruzione Exit For. Poiché in genere si desidera uscire dal loop solo in determinate situazioni, ad esempio quando si verifica un errore, è necessario utilizzare l'istruzione Exit For nel blocco True di un'istruzione If...Then...Else. Se la condizione restituisce False, il loop viene eseguito come al solito.
Esempio 4
Sub ExitForExample()
Dim i, total
total = 0
For i = 1 To 10
total = total + i
If i = 5 Then Exit For
Next
'Exited loop early. Total is 15
End Sub
Esempio 5
Sub DecreaseWithExit()
Dim n, sum
sum = 0
For n = 20 To 0 Step -2
sum = sum + n
If n = 10 Then Exit For
Next
'Exited loop early. sum is 90
End Sub