Inputbox to validate user date entry

thandel
thandel used Ask the Experts™
on
I would like to take a user input (a date) via an OK / Cancel box... so I'm successfully using an input box.  

Now I would like to make sure the user input date is:
- Not later than todays date
- If the user presses "cancel" the input box will cancel
- If the user presses OK and it's not a valid date and later than today it will prompt for an entry again.

I'm using the following code but I can't get it to check dates correctly.  If I Dim sOutRxDate as a date... it helps but then I can't tell if the user pressed escape.

Any ideas?

Dim sOutRxDate As String

    Do Until IsDate(sOutRxDate) And sOutRxDate <= Now()
        sOutRxDate = InputBox("What date was the outside Rx was issued?" & vbCrLf & vbCrLf & vbCrLf, "Outside Rx")
        If StrPtr(sOutRxDate) = 0 Then Exit Sub 'User pressed cancel
    Loop

Open in new window


Thank you.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
John TsioumprisSoftware & Systems Engineer

Commented:
 Do
        sOutRxDate = InputBox("What date was the outside Rx was issued?" & vbCrLf & vbCrLf & vbCrLf, "Outside Rx")
        If StrPtr(sOutRxDate) = 0 Then Exit Sub 'User pressed cancel
     Loop Until IsDate(sOutRxDate) And Cdate(sOutRxDate) <= Now()

Open in new window

Author

Commented:
Oh me like!  The only issue is if the user presses OK without anything entered or the user enters text, I get a data type mismatch error.  Can this be resolved without an error message to the user?
Top Expert 2008
Commented:
Another alternative is the following:

Dim sOutRxDate As String

GetDate:
    sOutRxDate = InputBox("What date was the outside Rx was issued?" & vbCrLf & vbCrLf & vbCrLf, "Outside Rx")
    If StrPtr(sOutRxDate) = 0 Then Exit Sub 'User pressed cancel
    If Not IsDate(sOutRxDate) Then GoTo GetDate
    If CDate(sOutRxDate) > Now() Then GoTo GetDate

Open in new window

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial