ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Loop gone crazy (https://www.excelbanter.com/excel-discussion-misc-queries/60710-loop-gone-crazy.html)

Dave Peterson

Loop gone crazy
 
I'd guess it was this line:

if shp = 1 or 2 or 3 or 4 then

I think you want:

if shp = 1 _
or shp = 2 _
or shp = 3 _
or shp = 4 then



mjack003 wrote:

Howdy,

Can someone tell me why this loop accepts any value rather than the set
constants?

Dim shp as Long
Dim shpSw as Integer

Do while shpSw = 0

shp = inputbox("Please enter a number:")

if shp = 1 or 2 or 3 or 4 then
shpSw =1

else

Msgbox("Please enter a number from 1-4")

end if
Loop

Should be a simple loop that if say "5" is entered will give the msgbox
and loop but it is accepting 5 and setting my switch to 1.

Thanks for the help in advance,

Mjack

--
mjack003
------------------------------------------------------------------------
mjack003's Profile: http://www.excelforum.com/member.php...fo&userid=5141
View this thread: http://www.excelforum.com/showthread...hreadid=494023


--

Dave Peterson

mjack003

Loop gone crazy
 

Howdy,

Can someone tell me why this loop accepts any value rather than the set
constants?

Dim shp as Long
Dim shpSw as Integer

Do while shpSw = 0

shp = inputbox("Please enter a number:")

if shp = 1 or 2 or 3 or 4 then
shpSw =1

else

Msgbox("Please enter a number from 1-4")

end if
Loop


Should be a simple loop that if say "5" is entered will give the msgbox
and loop but it is accepting 5 and setting my switch to 1.

Thanks for the help in advance,

Mjack


--
mjack003
------------------------------------------------------------------------
mjack003's Profile: http://www.excelforum.com/member.php...fo&userid=5141
View this thread: http://www.excelforum.com/showthread...hreadid=494023


Andrew Taylor

Loop gone crazy
 
I think there's a good case (haha) for using Select Case
in this sort of situation:

Select Case shp
Case 1, 2, 3, 4
shpSw =1
Case Else
Msgbox("Please enter a number from 1-4")
End Select


Dave Peterson wrote:
I'd guess it was this line:

if shp = 1 or 2 or 3 or 4 then

I think you want:

if shp = 1 _
or shp = 2 _
or shp = 3 _
or shp = 4 then



mjack003 wrote:

Howdy,

Can someone tell me why this loop accepts any value rather than the set
constants?

Dim shp as Long
Dim shpSw as Integer

Do while shpSw = 0

shp = inputbox("Please enter a number:")

if shp = 1 or 2 or 3 or 4 then
shpSw =1

else

Msgbox("Please enter a number from 1-4")

end if
Loop

Should be a simple loop that if say "5" is entered will give the msgbox
and loop but it is accepting 5 and setting my switch to 1.

Thanks for the help in advance,

Mjack

--
mjack003
------------------------------------------------------------------------
mjack003's Profile: http://www.excelforum.com/member.php...fo&userid=5141
View this thread: http://www.excelforum.com/showthread...hreadid=494023


--

Dave Peterson



Dave Peterson

Loop gone crazy
 
Excellent tip.

But I did want to show the OP why his (her?) if statement was incorrect.

Andrew Taylor wrote:

I think there's a good case (haha) for using Select Case
in this sort of situation:

Select Case shp
Case 1, 2, 3, 4
shpSw =1
Case Else
Msgbox("Please enter a number from 1-4")
End Select

Dave Peterson wrote:
I'd guess it was this line:

if shp = 1 or 2 or 3 or 4 then

I think you want:

if shp = 1 _
or shp = 2 _
or shp = 3 _
or shp = 4 then



mjack003 wrote:

Howdy,

Can someone tell me why this loop accepts any value rather than the set
constants?

Dim shp as Long
Dim shpSw as Integer

Do while shpSw = 0

shp = inputbox("Please enter a number:")

if shp = 1 or 2 or 3 or 4 then
shpSw =1

else

Msgbox("Please enter a number from 1-4")

end if
Loop

Should be a simple loop that if say "5" is entered will give the msgbox
and loop but it is accepting 5 and setting my switch to 1.

Thanks for the help in advance,

Mjack

--
mjack003
------------------------------------------------------------------------
mjack003's Profile: http://www.excelforum.com/member.php...fo&userid=5141
View this thread: http://www.excelforum.com/showthread...hreadid=494023


--

Dave Peterson


--

Dave Peterson

Andrew Taylor

Loop gone crazy
 
<OT
Dredging the recesses of my memory, the "1 or 2 or 3 or 4" idiom
used to be (probably still is for all I know...) valid in COBOL:

IF THING = 1 OR 2 OR 3 OR 4....

as an abbreviation for IF THING = 1 OR THING = 2 OR ....

You could even put NOTs in there, which was guaranteed to
catch the unwary, who would write:

IF THING NOT = 1 OR 2...

which unfortunately means IF THING NOT = 1 OR THING NOT = 2..
</OT


Dave Peterson wrote:
Excellent tip.

But I did want to show the OP why his (her?) if statement was incorrect.

Andrew Taylor wrote:

I think there's a good case (haha) for using Select Case
in this sort of situation:

Select Case shp
Case 1, 2, 3, 4
shpSw =1
Case Else
Msgbox("Please enter a number from 1-4")
End Select

Dave Peterson wrote:
I'd guess it was this line:

if shp = 1 or 2 or 3 or 4 then

I think you want:

if shp = 1 _
or shp = 2 _
or shp = 3 _
or shp = 4 then



mjack003 wrote:

Howdy,

Can someone tell me why this loop accepts any value rather than the set
constants?

Dim shp as Long
Dim shpSw as Integer

Do while shpSw = 0

shp = inputbox("Please enter a number:")

if shp = 1 or 2 or 3 or 4 then
shpSw =1

else

Msgbox("Please enter a number from 1-4")

end if
Loop

Should be a simple loop that if say "5" is entered will give the msgbox
and loop but it is accepting 5 and setting my switch to 1.

Thanks for the help in advance,

Mjack

--
mjack003
------------------------------------------------------------------------
mjack003's Profile: http://www.excelforum.com/member.php...fo&userid=5141
View this thread: http://www.excelforum.com/showthread...hreadid=494023

--

Dave Peterson


--

Dave Peterson




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

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