Reputation: 1819
i have a loop in a macro i'm writing of the following structure:
there are two worksheets in this book. raw data (hence the endpointData variable) and a G/L (General ledger) sheet (hence the endpointGL variable)
there are three for
loops in this function:
(1) the first loop iterates through each record in the raw data file.
(2) the second loop iterates through the verified matches from REGEXP
(a regular expression search) and
(3) the third loop goes through the G/L and finds a corresponding match and puts (using: PUT_DATA_RANGE
) that data into the appropriate spot.
Here's sort of what i'm getting at:
psuedocode:
For i = 2 To endpointData
If SOME_TEST = True Then
Set MATCHES = REGEXP.EXECUTE()
For Each myMatch In MATCHES
For j = 1 To endpointGL
If myMatch.value = SOME_CONDITION Then
PUT_DATA_RANGE
Exit For
ElseIf myMatch.value <> SOME_CONDITION Then
MsgBox ("there might be a problem")
' EXIT BOTH LOOPS HERE
' write handler code
Next
End If
Next
End If
Next i
now you'll notice that i have a few comments to myself. if the third loops finds no match in the G/L the code currently interrupts to notify the user. but that message box MsgBox("there might be a problem")
is looped through along with the third loop. how do i get excel to exit BOTH loops and bring the FIRST for loop to the next availabe record in the raw data?
by the way, i've tried exiting it with an Exit For
but that doesn't seem to work exactly.
Upvotes: 4
Views: 18887
Reputation: 974
I see two options.
1) Use a series of booleans to check if the outer loops should continue
2) Use a goto statement to exit from the inner loop directly back to the main procedure
In this situation, the goto might not be so bad since you aren't jumping to a completely different part of the code. Just document it well...
Upvotes: 4