Text Box Data Validation

G

Guest

I have some text boxes on a form that I want the user to be limited to only
numeric entry. I found this code in an earlier thread:

Private Sub TextBox1_KeyDown(ByVal KeyCode As _
MSForms.ReturnInteger, ByVal Shift As Integer)
If Shift = 2 Then
If KeyCode = 86 Then KeyCode = 0
End If
End Sub


Private Sub TextBox1_KeyPress(ByVal KeyAscii _
As MSForms.ReturnInteger)
Select Case KeyAscii
Case 46
If InStr(TextBox1.Text, ".") > 0 Then _
KeyAscii = 0
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub


This works great, but I need decimal entries to be allowed as well, and when
the user presses the "." key an error is returned. Since I'm fairly new at
this, and completely in the dark about limiting key entries, I need some help!
 
J

Jake Marx

Hi dutty,

Something like this should work:

Private Sub TextBox1_KeyPress(ByVal KeyAscii _
As MSForms.ReturnInteger)
If Not ((KeyAscii >= Asc("0") And _
KeyAscii <= Asc("9")) Or (KeyAscii = Asc(".") _
And InStr(TextBox1.Text, ".") = 0)) Then
Interaction.Beep
KeyAscii = 0
End If
End Sub

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]
 
G

Guest

You 'da man, Jake!!

Thanks so much!

Jake Marx said:
Hi dutty,

Something like this should work:

Private Sub TextBox1_KeyPress(ByVal KeyAscii _
As MSForms.ReturnInteger)
If Not ((KeyAscii >= Asc("0") And _
KeyAscii <= Asc("9")) Or (KeyAscii = Asc(".") _
And InStr(TextBox1.Text, ".") = 0)) Then
Interaction.Beep
KeyAscii = 0
End If
End Sub

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]

I have some text boxes on a form that I want the user to be limited
to only numeric entry. I found this code in an earlier thread:

Private Sub TextBox1_KeyDown(ByVal KeyCode As _
MSForms.ReturnInteger, ByVal Shift As Integer)
If Shift = 2 Then
If KeyCode = 86 Then KeyCode = 0
End If
End Sub


Private Sub TextBox1_KeyPress(ByVal KeyAscii _
As MSForms.ReturnInteger)
Select Case KeyAscii
Case 46
If InStr(TextBox1.Text, ".") > 0 Then _
KeyAscii = 0
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub


This works great, but I need decimal entries to be allowed as well,
and when the user presses the "." key an error is returned. Since
I'm fairly new at this, and completely in the dark about limiting key
entries, I need some help!
 

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