Call a proc inside itself (HELP)

D

David

Hello,
I have a problem...
I call my proc inside itself and here's what happens...

for example :
****
Sub test()

Dim MyYear as Variant
Dim AnyString as String

MyYear = Inputbox("type your date (yyyy)")

Select Case MyYear
Case 1900 to 2000
AnyString = "20th Century"
Case 2001 to 2050
AnyString = "Begining of 21Th Century"
Case else
AnyThing = "This is not a valid Date"
' I'M HERE RECALLING THE SAME SUB SO I CAN HAVE THE INPUTBOX AGAIN
call test ' (or just test)
End Select

Msgbox AnyString
End sub
****

Unfortunatly... if i run my modules and for several time put something else
than a number to my inputbox, it will run my inputbox several time but ALSO
would run the MSGBOX ANYSTRING as much as time... so i have onr right
message and several-1 not as good !!

Can anyone tell me what i'm doing wrong PLEASE !
Thnx

David.
 
T

Tom Ogilvy

Sub test()

Dim MyYear as Variant
Dim AnyString as String
AnyString = "Invalid Input"

Do
MyYear = Inputbox("type your date (yyyy)")

Select Case MyYear
Case 1900 to 2000
AnyString = "20th Century"
Case 2001 to 2050
AnyString = "Begining of 21Th Century"
Case else
AnyString = "Invalid input"
End Select

Msgbox AnyString
Loop While lcase(anystring) = "invalid input"
End sub
 
S

Sonny Kocak

Hello David,

Thanks goes out to Tom, again. You noticed to expected behavior of
recursion with Excel VBA. Note: Your solution requires a call to a function
which returns the desired string value or a error message. Thus the calling
function can then drive require loop until a valid date is entered.

Answer by community.

Sonny Kocak
a-sonnykne.microsoft.com
Microsoft Developer Support

This posting is provided "AS IS" with no warranties, and confers no rights.




--------------------
| From: "Tom Ogilvy" <[email protected]>
| References: <[email protected]>
| Subject: Re: Call a proc inside itself (HELP)
| Date: Tue, 3 Feb 2004 16:32:39 -0500
| Lines: 72
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.excel.programming
| NNTP-Posting-Host: host-141-116-172-231.ptr.hqda.pentagon.mil
141.116.172.231
| Path:
cpmsftngxa07.phx.gbl!cpmsftngxa10.phx.gbl!TK2MSFTNGXA05.phx.gbl!TK2MSFTNGP08
.phx.gbl!TK2MSFTNGP12.phx.gbl
| Xref: cpmsftngxa07.phx.gbl microsoft.public.excel.programming:459001
| X-Tomcat-NG: microsoft.public.excel.programming
|
| Sub test()
|
| Dim MyYear as Variant
| Dim AnyString as String
| AnyString = "Invalid Input"
|
| Do
| MyYear = Inputbox("type your date (yyyy)")
|
| Select Case MyYear
| Case 1900 to 2000
| AnyString = "20th Century"
| Case 2001 to 2050
| AnyString = "Begining of 21Th Century"
| Case else
| AnyString = "Invalid input"
| End Select
|
| Msgbox AnyString
| Loop While lcase(anystring) = "invalid input"
| End sub
|
|
| --
| Regards,
| Tom Ogilvy
|
| | > Hello,
| > I have a problem...
| > I call my proc inside itself and here's what happens...
| >
| > for example :
| > ****
| > Sub test()
| >
| > Dim MyYear as Variant
| > Dim AnyString as String
| >
| > MyYear = Inputbox("type your date (yyyy)")
| >
| > Select Case MyYear
| > Case 1900 to 2000
| > AnyString = "20th Century"
| > Case 2001 to 2050
| > AnyString = "Begining of 21Th Century"
| > Case else
| > AnyThing = "This is not a valid Date"
| > ' I'M HERE RECALLING THE SAME SUB SO I CAN HAVE THE INPUTBOX
AGAIN
| > call test ' (or just test)
| > End Select
| >
| > Msgbox AnyString
| > End sub
| > ****
| >
| > Unfortunatly... if i run my modules and for several time put something
| else
| > than a number to my inputbox, it will run my inputbox several time but
| ALSO
| > would run the MSGBOX ANYSTRING as much as time... so i have onr right
| > message and several-1 not as good !!
| >
| > Can anyone tell me what i'm doing wrong PLEASE !
| > Thnx
| >
| > David.
| >
| >
|
|
|
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top