Solved

# Exiting a loop

Posted on 2004-09-26
252 Views
Hi:
I has written code that evalutes test conditions.When coditions are true a message box is displayed. How do I exit the loop immediately after the message box?

'declare variables
Dim intRow As Integer, intRow2 As Integer, intRow3 As Integer
Dim intColumn As Integer, intColumn2 As Integer, intColumn3 As Integer
Dim intX1 As Integer, intX2 As Integer
Dim intO1 As Integer, intO2 As Integer
Dim totalX As Integer, totalO As Integer

'test top diagonal for X and O
If lblXO(0).Caption = "X" And lblXO(4).Caption = "X" And lblXO(8).Caption = "X" Then
MsgBox " X wins"
Else
If lblXO(0).Caption = "O" And lblXO(4).Caption = "O" And lblXO(8).Caption = "O" Then
MsgBox " O wins!"

End If
End If

'test bottom diagonal for X and O
If lblXO(2).Caption = "X" And lblXO(4).Caption = "X" And lblXO(6).Caption = "X" Then
MsgBox " X wins!"

Else
If lblXO(2).Caption = "O" And lblXO(4).Caption = "O" And lblXO(6).Caption = "O" Then
MsgBox " O wins!"
End If
End If

'loop for rows
Do While intRow <= 2

'loop for columns
Do While intColumn <= (intRow + 6)

'assign columns
intColumn2 = intRow + 3
intColumn3 = intRow + 6

'test columns for X or O
If lblXO(intRow).Caption = "X" And lblXO(intColumn2).Caption = "X" And lblXO(intColumn3).Caption = "X" Then

MsgBox " X wins!"

Else
If lblXO(intRow).Caption = "O" And lblXO(intColumn2).Caption = "O" And lblXO(intColumn3).Caption = "O" Then
MsgBox " O wins!"

End If
End If

'assign rows
intRow2 = intColumn + 1
intRow3 = intColumn + 2

'test rows for X or O
If lblXO(intColumn).Caption = "X" And lblXO(intRow2).Caption = "X" And lblXO(intRow3).Caption = "X" Then
MsgBox " X wins"
Else
If lblXO(intColumn).Caption = "O" And lblXO(intRow2).Caption = "O" And lblXO(intRow3).Caption = "O" Then
MsgBox " O wins!"
End If
End If

'counter for columns
intColumn = intColumn + 3

'loop for columns
Loop

'counter for rows
intRow = intRow + 1
intColumn = 0

'loop for rows
Loop

End Sub

0
Question by:LearningJava

LVL 32

Assisted Solution

Erick37 earned 100 total points
ID: 12155683
In a Do loop use this line:

Exit Do

In a For .. Next loop:

Exit For
0

LVL 85

Accepted Solution

Mike Tomlinson earned 300 total points
ID: 12156625
If you rearrange your conditonal statement a little then you can do it like this:

Private Sub checkForWin()
'declare variables
Dim intRow As Integer, intRow2 As Integer, intRow3 As Integer
Dim intColumn As Integer, intColumn2 As Integer, intColumn3 As Integer
Dim intX1 As Integer, intX2 As Integer
Dim intO1 As Integer, intO2 As Integer
Dim totalX As Integer, totalO As Integer

If lblXO(0).Caption = "X" And lblXO(4).Caption = "X" And lblXO(8).Caption = "X" Then
'test top diagonal for X and O
MsgBox " X wins"
ElseIf lblXO(0).Caption = "O" And lblXO(4).Caption = "O" And lblXO(8).Caption = "O" Then
MsgBox " O wins!"
ElseIf lblXO(2).Caption = "X" And lblXO(4).Caption = "X" And lblXO(6).Caption = "X" Then
'test bottom diagonal for X and O
MsgBox " X wins!"
ElseIf lblXO(2).Caption = "O" And lblXO(4).Caption = "O" And lblXO(6).Caption = "O" Then
MsgBox " O wins!"
Else
'loop for rows
Do While intRow <= 2
'loop for columns
Do While intColumn <= (intRow + 6)

'assign columns
intColumn2 = intRow + 3
intColumn3 = intRow + 6

'test columns for X or O
If lblXO(intRow).Caption = "X" And lblXO(intColumn2).Caption = "X" And lblXO(intColumn3).Caption = "X" Then
MsgBox " X wins!"
Exit Sub
ElseIf lblXO(intRow).Caption = "O" And lblXO(intColumn2).Caption = "O" And lblXO(intColumn3).Caption = "O" Then
MsgBox " O wins!"
Exit Sub
End If

'assign rows
intRow2 = intColumn + 1
intRow3 = intColumn + 2

'test rows for X or O
If lblXO(intColumn).Caption = "X" And lblXO(intRow2).Caption = "X" And lblXO(intRow3).Caption = "X" Then
MsgBox " X wins"
Exit Sub
ElseIf lblXO(intColumn).Caption = "O" And lblXO(intRow2).Caption = "O" And lblXO(intRow3).Caption = "O" Then
MsgBox " O wins!"
Exit Sub
End If

'counter for columns
intColumn = intColumn + 3

'loop for columns
Loop

'counter for rows
intRow = intRow + 1
intColumn = 0

'loop for rows
Loop
End If
End Sub
0

LVL 5

Assisted Solution

KarcOrigin earned 100 total points
ID: 12156701
Use Exit Do to exit from your Do While loop. Using Exit Sub will exit you from the whole procedure and no statement can be fired outside of the Do While... Loop. Consider the example -

Private Sub MySub()
Do While <condition>
If (<condition>) Then
MsgBox("I am here")
Exit Do
Else
MsgBox("I am not here")
End If
Loop
MsgBox("I am no where")
End Sub

If you use Exit Do then you would get two message "I am here" and "I am no where" But if you use Exit Sub you would get only one message "I am here" because of the Exit Sub statement.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…