View Single Post
  #12   Report Post  
Posted to microsoft.public.excel.programming
Rick Rothstein Rick Rothstein is offline
external usenet poster
 
Posts: 5,934
Default Validation on text input boxes on a form

I'm not exactly sure of how your interface is supposed to work. If you want
to use the InputBox method to get the date, here is that code (where I am
assuming the TextBox is named PropDate)...

Dim DateIn As String
DateIn = Application.InputBox(prompt:="enter date mm/dd/yy", Type:=2)
If DateIn Like "##/##/##" And IsDate(x) Then
PropDate.Text = DateIn
Else
PropDate.Text = "??? That is not a date ???"
End If

Normally, this would be kind of an awkward interface as the TextBox is
capable of receiving user typing directly. If you have an OK type
CommandButton on the UserForm, I would let the user enter his/her date
directly into the PropDate TextBox and put this code in that OK type
CommandButton's Click event to verify the format of the entry...

Private Sub CommandButton1_Click()
With PropDate
If Not (.Text Like "##/##/##" And IsDate(.Text)) Then
MsgBox "Your entry is not a real date", vbCritical, "Bad Date Entry"
.SelStart = 0
.SelLength = Len(.Text)
.SetFocus
Exit Sub
End If
End With
'
' The rest of your OK button code goes here
'
End Sub

There are other options available, but it all depends on what is on your
UserForm and how the user is supposed to interact with whatever controls
they are.

--
Rick (MVP - Excel)


"zak" wrote in message
...
Hi

Thanks for helping me out with this code. I actually have created a
userform with a text input box (which is called PropDate). When the input
box pops up and the date gets entered in the correct format - how can i
add
that date into the PropDate text input box on my userform?

"Rick Rothstein" wrote:

This is another possibility...

Sub ordinate()
Dim x As String
x = Application.InputBox(prompt:="enter date mm/dd/yy", Type:=2)
If x Like "##/##/##" And IsDate(x) Then
MsgBox DateValue(x)
Else
MsgBox "bad input"
End If
End Sub

--
Rick (MVP - Excel)


"Gary''s Student" wrote in
message
...
Get the date as a String, and then detailed checks can be made:

Sub ordinate()
Dim x As String
Dim n As Integer
Dim dt As Date
x = Application.InputBox(prompt:="enter date mm/dd/yy", Type:=2)

If Len(x) < 8 Then
MsgBox ("bad input")
End If

s = Split(x, "/")
If UBound(s) < 2 Then
MsgBox ("bad input")
End If

n = s(0)
If n 12 Then
MsgBox ("bad input")
End If

n = s(1)
If n 31 Then
MsgBox ("bad input")
End If

dt = DateValue(x)
MsgBox (dt)
End Sub

--
Gary''s Student - gsnu200826


"zak" wrote:

Hi

I was wondering if anyone can let me know how to add validation to
text
input boxes on forms?

I have several forms on a spreadsheet that I am creating and there are
quite
a few time and date input boxes, which I was hoping I could add
validation to
so that the information is entered in the correct format? i.e. date
should
only be in dd/mm/yy, time should only be entered like hh:mm etc.

Can this be done?