The value of a loop counter variable is incremented one beyond the set range when the loop is completed. For example, if you use a For i = 0 to 5…Next loop, i equals 6 when all loop iterations have been completed. If you use the For…Next statement with an Exit For statement, you can use the value of the loop counter variable to determine whether a condition was met during the loop. Here’s one possible application of this technique, which can be applied when you have an array of values, each element of which has a unique value:
Dim sText(10) As String Dim i As Long ' Initialize strings - A, B, C, D, ... For i = 1 To 10 sText(i) = Chr$(Asc("A") + i) Next i
Suppose you want to find which element, if any, has a given value. You could use a Do…Until Loop and a flag:
Dim i As Long Dim IsFound As Boolean i = 0 Do While Not IsFound i = i + 1 If i > 10 Then Exit Do If sText(i) = "J" Then IsFound = True Loop If IsFound Then MsgBox "Found J as element: " & i Else MsgBox "Could not find J" End If
Or you can use a For…Next loop without a flag:
Dim i As Long For i = 1 To 10 If sText(i) = "J" Then Exit For Next i If i <= 10 Then MsgBox "Found J at element: " & i Else MsgBox "Could not find J" End If
This search routine is shorter and faster in the second case.