ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   ascii validation question (https://www.excelbanter.com/excel-programming/369912-ascii-validation-question.html)

SimonBianchi

ascii validation question
 

I have created the following code to only allow numeric values (an
decimal point) into TextBox1.

Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("99")
Case Asc(".")
If InStr(1, TextBox1.Text, ".") 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub
The problem is this allow the entry of the decimal point alone. Thi
causes a '#VALUE' error in the target cell which in turn causes th
code to halt and bring up the debug form.
How do I modify this code so that if the user attempts to enter th
decimal point without a trailing number the value gets turned to Null

--
SimonBianch
-----------------------------------------------------------------------
SimonBianchi's Profile: http://www.excelforum.com/member.php...fo&userid=3729
View this thread: http://www.excelforum.com/showthread.php?threadid=57011


Dave Peterson

ascii validation question
 
How about adding another check?

If TextBox1.Text = "" Then
KeyAscii = 0
End If

In the case asc(".") portion.

And watch that Asc("99"). I bet you meant asc("9").

====

But I don't think I'd stop this. But right before I was gonna use that value in
the textbox, I'd prefix it with a 0.

So if the user wanted to hit .5, they could.
I'd just stick a 0 in front (0.5) before processing.

Maybe even format the number on the way out:

Option Explicit
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox1
.Text = Format("0" & .Text, "0.000")
End With
End Sub





SimonBianchi wrote:

I have created the following code to only allow numeric values (and
decimal point) into TextBox1.

Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("99")
Case Asc(".")
If InStr(1, TextBox1.Text, ".") 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub
The problem is this allow the entry of the decimal point alone. This
causes a '#VALUE' error in the target cell which in turn causes the
code to halt and bring up the debug form.
How do I modify this code so that if the user attempts to enter the
decimal point without a trailing number the value gets turned to Null?

--
SimonBianchi
------------------------------------------------------------------------
SimonBianchi's Profile: http://www.excelforum.com/member.php...o&userid=37298
View this thread: http://www.excelforum.com/showthread...hreadid=570116


--

Dave Peterson


All times are GMT +1. The time now is 10:22 AM.

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