ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Call a proc inside itself (HELP) (https://www.excelbanter.com/excel-programming/290135-call-proc-inside-itself-help.html)

David

Call a proc inside itself (HELP)
 
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.



Tom Ogilvy

Call a proc inside itself (HELP)
 
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

"David" wrote in message
...
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.





Sonny Kocak

Call a proc inside itself (HELP)
 

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"
| References:
| Subject: 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:
| 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!TK2MSFTN GXA05.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
|
| "David" wrote in message
| ...
| 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.
|
|
|
|
|



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

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