ict-torquilclark
asked on
Loop a Do While in an IF
I have a DO WHILE statement and in that statement there is an IF ststement, is it possible to loop the origional DO ststement in the IF ststement
do u mean that the DO WHILE should be inside the IF statement?can u post the code?
ASKER
Sorry - i didnt explain very well
I I know the code doesnt achieve anything but it just came up with it as an example of what i am trying to do.
in the code x should never = 4
when i do it i get the error
"loop without DO"
I I know the code doesnt achieve anything but it just came up with it as an example of what i am trying to do.
in the code x should never = 4
when i do it i get the error
"loop without DO"
x = 1
Do While x < 10
IF x = 3 THEN
x = x + 2
loop
END IF
x = x + 1
loop
I am not sure I undestand, but here is something that might solve your problem.
Do while Finished = False
if I_Want_To_Exit=true then
Exit Do
End If
If I_Want_to_Move_to_Next = true then
Continue Do
End If
<Your Normal Code>
Loop
Do while Finished = False
if I_Want_To_Exit=true then
Exit Do
End If
If I_Want_to_Move_to_Next = true then
Continue Do
End If
<Your Normal Code>
Loop
After reading your second post, "Continue Do" is your solution.
This command will move the code to the "Do" statement.
This command will move the code to the "Do" statement.
try this:
x = 1
Do While x < 10
IF x = 3 THEN
x = x + 2
ELSE
x = x + 1
END IF
loop
x = 1
Do While x < 10
IF x = 3 THEN
x = x + 2
ELSE
x = x + 1
END IF
loop
How about the following ... I have placed a stop itf it hits 4 ... which it doesn't.
You can change the line:
If x = 4 Then Stop
to for example 3 to see it stop since all other values are processed
Chris
You can change the line:
If x = 4 Then Stop
to for example 3 to see it stop since all other values are processed
Chris
x = 1
Do While x < 10
If x = 3 Then
x = x + 1
End If
x = x + 1
If x = 4 Then Stop
Loop
SLightly modified to support a demo output
Chris
Chris
x = 0
Do While x < 10
x = x + 1
If x = 4 Then
x = x + 1
End If
If x = 4 Then
Stop
Else
Debug.Print x
End If
Loop
ASKER
basically i need it to stop the current loop and continue on with the next loop if the value of the if is true
As I said above my friend, the command
Continue Do
will do exacty that.
Continue Do
will do exacty that.
Removing other aspects then .. see the comment this is where you your bit ... and it isn't triggered if x = 4
Chris
Chris
Do While x < 10
x = x + 1
If x <> 4 Then
' do your stuff
End If
Loop
ASKER
I have tried Continue do and it is not recognised as a command
i am using vb6...?
i am using vb6...?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
The only way??? - not so, see my earlier post.
Chris
Chris
chris_bottomley, yes there are several things you can do to work around the need for a continue statement.
Still, if you really need the "Continue Do" functionality, the way to go is with GOTO.
Still, if you really need the "Continue Do" functionality, the way to go is with GOTO.
Your original code will work with a slight modification:
x = 1
Do While x < 10
IF x = 3 THEN
x = x + 2
Else
x = x + 1
END IF
Loop
Simple...
x = 1
Do While x < 10
IF x = 3 THEN
x = x + 2
Else
x = x + 1
END IF
Loop
Simple...
@VBClassicGuy
like my suggestion...
like my suggestion...
For my education why did you select the option:
Do While x < 10
' do your stuff
IF x = 3 THEN
x = x + 2
GOTO ContinueLoop
END IF
x = x + 1
ContinueLoop:
loop
It seems much more complex than:
Do While x < 10
x = x + 1
If x <> 4 Then
' do your stuff
End If
Loop
i.e. 5 lines and a jump label as compared to two lines without. (Jumps are genrally considered bad practice though sometimes are unavoidable.
ALso note my method doesn't care what value you start with ... the accepted solution will fall over when starting at 4 - not critical if you always intend to start on 1 but nonetheless more risky.
Chris
Do While x < 10
' do your stuff
IF x = 3 THEN
x = x + 2
GOTO ContinueLoop
END IF
x = x + 1
ContinueLoop:
loop
It seems much more complex than:
Do While x < 10
x = x + 1
If x <> 4 Then
' do your stuff
End If
Loop
i.e. 5 lines and a jump label as compared to two lines without. (Jumps are genrally considered bad practice though sometimes are unavoidable.
ALso note my method doesn't care what value you start with ... the accepted solution will fall over when starting at 4 - not critical if you always intend to start on 1 but nonetheless more risky.
Chris
My friends, I agree that the goto statement in VB6 should only be used for Error Handling and that the correct programming technique is to avoid jumping around the code and creating spagetti code.
BUT, sometimes it is the easiest way around a problem. In the example that ict-torquilclark posted, it wouldn't make any sense. But in a loop where there are several exit positions spread around the loop, maybe it is the correct way to go.
BUT, sometimes it is the easiest way around a problem. In the example that ict-torquilclark posted, it wouldn't make any sense. But in a loop where there are several exit positions spread around the loop, maybe it is the correct way to go.
IMHO: The selected comment is a poor solution.
Have a look at this relevant article.
https://www.experts-exchange.com/A_2755.html
aikimark
Have a look at this relevant article.
https://www.experts-exchange.com/A_2755.html
aikimark