ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How to get out of loop ???? (https://www.excelbanter.com/excel-programming/286204-how-get-out-loop.html)

Ray Batig

How to get out of loop ????
 
I wrote the following code to get a new name . Everything works except my
confirmation check. I have tried several attempts and have not met with
sucess. In all cases, I end up completing the sub when I click the No button
to BMbResponse. What am I missing? Is there a better way?

Thanks for your help and Merry Christmas.

Ray

Do Until NAreaName < ""

NAreaName = InputBox("Please enter the New Area name. ", "Area
Name Input")
If Len(NAreaName) 18 Then ' check if name exceeds length limit
MsgBox " Proposed name is too long, try again. "
NAreaName = ""
GoTo loop1:
End If
For Each cell In Range("AreaNames") ' check if name is in use
If NAreaName = Trim(cell.Value) Then
MsgBox "New name is already in use, try again."
NAreaName = ""
GoTo loop1:
End If
Next cell
' confirmation check before proceeding

bMbResponse = MsgBox("You have entered : " & NAreaName & " " &
vbCrLf & _
" Do you want to continue?", vbYesNo)

If bMbResponse = vbNo Then End ' decide you did not want to
proceed

loop1:
Loop
End If
Unload UserForm2
' write new name to worksheet
Worksheets("Area").Cells(7, RrC + 1).Value = NAreaName

End Sub



Rob van Gelder[_4_]

How to get out of loop ????
 
GetName:
NAreaName = InputBox("Please enter the New Area name. ", "Area Name
Input")
If Len(NAreaName) 18 Then ' check if name exceeds length limit
MsgBox " Proposed name is too long, try again. "
GoTo GetName
End If
For Each cell In Range("AreaNames") ' check if name is in use
If NAreaName = Trim(cell.Value) Then
MsgBox "New name is already in use, try again."
GoTo GetName
End If
Next cell

' confirmation check before proceeding

bMbResponse = MsgBox("You have entered : " & NAreaName & " " & vbCrLf &
_
" Do you want to continue?", vbYesNo)

If bMbResponse = vbNo Then Exit Sub ' decide you did not want to
proceed

' write new name to worksheet
Worksheets("Area").Cells(7, RrC + 1).Value = NAreaName


"Ray Batig" wrote in message
link.net...
I wrote the following code to get a new name . Everything works except my
confirmation check. I have tried several attempts and have not met with
sucess. In all cases, I end up completing the sub when I click the No

button
to BMbResponse. What am I missing? Is there a better way?

Thanks for your help and Merry Christmas.

Ray

Do Until NAreaName < ""

NAreaName = InputBox("Please enter the New Area name. ", "Area
Name Input")
If Len(NAreaName) 18 Then ' check if name exceeds length

limit
MsgBox " Proposed name is too long, try again. "
NAreaName = ""
GoTo loop1:
End If
For Each cell In Range("AreaNames") ' check if name is in use
If NAreaName = Trim(cell.Value) Then
MsgBox "New name is already in use, try again."
NAreaName = ""
GoTo loop1:
End If
Next cell
' confirmation check before proceeding

bMbResponse = MsgBox("You have entered : " & NAreaName & " "

&
vbCrLf & _
" Do you want to continue?", vbYesNo)

If bMbResponse = vbNo Then End ' decide you did not want to
proceed

loop1:
Loop
End If
Unload UserForm2
' write new name to worksheet
Worksheets("Area").Cells(7, RrC + 1).Value = NAreaName

End Sub





Tim Zych[_4_]

How to get out of loop ????
 
I tend to stay away from GoTos. They make it harder to be structured.

Sub Tester()
Dim NAreaName As String, blnExit As Boolean
Dim bMbResponse As Long
Do
NAreaName = InputBox("Enter the new area name", "Enter Area Name")
If NAreaName = "" Then
blnExit = False
ElseIf Len(NAreaName) 18 Then
MsgBox "Too Long"
blnExit = False
ElseIf Application.CountIf(Range("AreaNames"), _
NAreaName) 0 Then
MsgBox "Name has already been used."
blnExit = False
Else
blnExit = True
End If
Loop While blnExit = False
bMbResponse = MsgBox("You have entered " & NAreaName & _
vbLf & vbLf & "Do you want to continue", vbYesNo)
If bMbResponse = vbYes Then
Worksheets("Area").Cells(7, RrC + 1).Value = NAreaName
End If
End Sub




"Ray Batig" wrote in message
link.net...
I wrote the following code to get a new name . Everything works except my
confirmation check. I have tried several attempts and have not met with
sucess. In all cases, I end up completing the sub when I click the No

button
to BMbResponse. What am I missing? Is there a better way?

Thanks for your help and Merry Christmas.

Ray

Do Until NAreaName < ""

NAreaName = InputBox("Please enter the New Area name. ", "Area
Name Input")
If Len(NAreaName) 18 Then ' check if name exceeds length

limit
MsgBox " Proposed name is too long, try again. "
NAreaName = ""
GoTo loop1:
End If
For Each cell In Range("AreaNames") ' check if name is in use
If NAreaName = Trim(cell.Value) Then
MsgBox "New name is already in use, try again."
NAreaName = ""
GoTo loop1:
End If
Next cell
' confirmation check before proceeding

bMbResponse = MsgBox("You have entered : " & NAreaName & " "

&
vbCrLf & _
" Do you want to continue?", vbYesNo)

If bMbResponse = vbNo Then End ' decide you did not want to
proceed

loop1:
Loop
End If
Unload UserForm2
' write new name to worksheet
Worksheets("Area").Cells(7, RrC + 1).Value = NAreaName

End Sub





Rob van Gelder[_4_]

GoTo
 
I tend not to use GoTos either (even though the example I supplied used
them -oops). I think programmers are generally divided on the issue.

For more info on the opposition to GoTo:
http://www.google.com/search?q=Dijkstra+GoTo


"Tim Zych" wrote in message
...
I tend to stay away from GoTos. They make it harder to be structured.

Sub Tester()
Dim NAreaName As String, blnExit As Boolean
Dim bMbResponse As Long
Do
NAreaName = InputBox("Enter the new area name", "Enter Area Name")
If NAreaName = "" Then
blnExit = False
ElseIf Len(NAreaName) 18 Then
MsgBox "Too Long"
blnExit = False
ElseIf Application.CountIf(Range("AreaNames"), _
NAreaName) 0 Then
MsgBox "Name has already been used."
blnExit = False
Else
blnExit = True
End If
Loop While blnExit = False
bMbResponse = MsgBox("You have entered " & NAreaName & _
vbLf & vbLf & "Do you want to continue", vbYesNo)
If bMbResponse = vbYes Then
Worksheets("Area").Cells(7, RrC + 1).Value = NAreaName
End If
End Sub




"Ray Batig" wrote in message
link.net...
I wrote the following code to get a new name . Everything works except

my
confirmation check. I have tried several attempts and have not met with
sucess. In all cases, I end up completing the sub when I click the No

button
to BMbResponse. What am I missing? Is there a better way?

Thanks for your help and Merry Christmas.

Ray

Do Until NAreaName < ""

NAreaName = InputBox("Please enter the New Area name. ",

"Area
Name Input")
If Len(NAreaName) 18 Then ' check if name exceeds length

limit
MsgBox " Proposed name is too long, try again. "
NAreaName = ""
GoTo loop1:
End If
For Each cell In Range("AreaNames") ' check if name is in

use
If NAreaName = Trim(cell.Value) Then
MsgBox "New name is already in use, try again."
NAreaName = ""
GoTo loop1:
End If
Next cell
' confirmation check before proceeding

bMbResponse = MsgBox("You have entered : " & NAreaName & "

"
&
vbCrLf & _
" Do you want to continue?", vbYesNo)

If bMbResponse = vbNo Then End ' decide you did not want to
proceed

loop1:
Loop
End If
Unload UserForm2
' write new name to worksheet
Worksheets("Area").Cells(7, RrC + 1).Value = NAreaName

End Sub








All times are GMT +1. The time now is 08:56 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com