Inputbox and cancel button

U

Uddinj1

Hi All,

I am rather confused as to why the following macro does not work properly. The
problem is when the user presses the cancel button without entering anything in
the Inputbox it starts looping! However, if the user presses OK without
entering anything in the Inputbox then it exits! Can you see why. Thanks for
your help.

Dim UInput as string
Dim Msg as string
Msg = "Enter todays date"

Do
UInput = Application.inputbox(Msg)
If UInput = "" then Exit Sub
If Isdate(UInput) then
Msgbox "Thank You"
Exit Do
End if
Msg = "You did not enter a date"
Msg = Msg & vbNewLine
Msg = Msg & "Enter todays date"
Loop

Regards
UJ
 
J

JE McGimpsey

take a look at the Inputbox method in VBA Help. If the user click
Cancel, the value False is returned, which the assignment operator
coerces to a string.


Try this instead:

Const Msg1 As String = "Enter today's date"
Const Msg2 As String = "You did not enter a valid date." & _
vbNewLine & "Please enter today's date"
Dim UInput As Variant
Dim bLoop As Boolean

Do
UInput = Application.InputBox( _
Prompt:=IIf(bLoop, Msg2, Msg1), _
Default:=Date)
If UInput = False Then Exit Sub
bLoop = True
Loop Until IsDate(UInput)

n article <[email protected]>,
 
M

mudraker

When the cancel button is pressed uinput = false

You code only checks for ""

This is why your code is not exiting sub

modify your code

If UInput = "" or Uinput = false then Exit Su
 
A

Andres Angel

The cancel button is returning a value of False
Change hte IF statement to
IF UInput= False then Exit Sub

That should work

Andres
 
J

JE McGimpsey

on reflection, I'm confused about why this inputbox is even necessary.
Today's date can always be found using the Date function:

UInput = Date
 
U

UJ

Hi,
I did not get to see your reply until now. I used today's
date as an example. I need a date entered depending on
other issues.

However, the answer you provided works and it is
exteremely useful to me. Thank you. Best wishes.

Regards

UJ
 

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