Need help with For-Next block

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I have the following code block:

For x = 1 To 10
If RowIsBlank(8) = True Then
Application.DisplayAlerts = False
Workbooks(TargetFile(x)).Close
Application.DisplayAlerts = True
Next x
End If
.... more instructions ...
Next x

but when I run the code, I receive the expected "Next without For" error
message.
I need to somehow increment "x" when the IF-block evaluates to True. Can
someone kindly tell me how to pull this off?

Thanks in advance for any help.
 
Bob,

Try

For x = 1 To 10
If RowIsBlank(8) = True Then
Application.DisplayAlerts = False
Workbooks(TargetFile(x)).Close
Application.DisplayAlerts = True
x=x+1
End If
... more instructions ...
Next x

Mike
 
x will automatically increment wen the Next x line is reached. You do
not need two Next x lines to pull this off.
Do you want to skip over the ...more instructions... portion if the If
statement is true? That's the way I am interpreting it. If so, just
throw in an Else clause and remove the unneeded Next x statement.
For x = 1 To 10
If RowIsBlank(8) = True Then
Application.DisplayAlerts = False
Workbooks(TargetFile(x)).Close
Application.DisplayAlerts = True
Else
... more instructions ...
End If
Next x
 
Mike,
I should have been more clear in my objective. My apologies.

If the IF-block evaluates to True, not only do I need to increment "x" by 1,
but I also need to skip the "... more instructions ..." section, too. That's
the part I'm struggling with.

Thanks again for the help.
Bob
 
Bob,

There will probably be cries of outrage and spaghetti code accusations but
I'd use Goto like this

For x = 1 To 10
If RowIsBlank(8) = True Then
Application.DisplayAlerts = False
Workbooks(TargetFile(x)).Close
Application.DisplayAlerts = True
Goto 100
End If
.... more instructions ...
100
Next x


X will then increment by 1 when it reaches Next X

Mike
 
Not to take anything away from Mike's code, but I still believe that a
simple Else clause is all you need.
Do this if true
Else
Do this if false
Next x

Seems to me to be exactly what you want. See the code I posted
earlier. If I am completely lost, then please set me straight.
 
JW,
Yes, I also wanted to skip over the ...more instructions... portion.
Inserting an Else clause did the trick. (I'm embarrassed that I didn't think
of that.) Thanks for your help!
Bob
 
JW,

I agree your solution is much neater.

Mike

JW said:
Not to take anything away from Mike's code, but I still believe that a
simple Else clause is all you need.
Do this if true
Else
Do this if false
Next x

Seems to me to be exactly what you want. See the code I posted
earlier. If I am completely lost, then please set me straight.
 
Mike,
I, too, prefer NOT to use Goto. JW suggested using an Else clause which did
the trick. Thanks all the same.
Bob
 
Perhaps...

For x = 1 to 10
If RowIsBlank(8) = True Then
Application.DisplayAlerts = False
Workbooks(TargetFile(x)).Close
Application.DisplayAlerts = True
x = x +1
Else
... more instructions ...
End If
Next x
 
Back
Top