I want to make a TextBox control that only accepts numerical values.
How can I do this in VB6?
I usually use this code:
Private Sub text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And Not KeyAscii = 8 Then
KeyAscii = 0
End If
End Sub
Hope this helps.
In the text box text Change
event, check if the entered value is a number. If it's not a number then set the old value back again.
Dim textval As String
Dim numval As String
Private Sub TextBox1_Change()
textval = TextBox1.Text
If IsNumeric(textval) Then
numval = textval
Else
TextBox1.Text = CStr(numval)
End If
End Sub
The following may be used for whole numbers:
Private Sub text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(text1.Text & Chr(KeyAscii)) And Not KeyAscii = 8 Then KeyAscii = 0
if (KeyAscii>=43) and (KeyAscii<=46) Then KeyAscii = 0
'it ignores '-', '+', '.' and ','
End Sub
Try this code:
Private Sub Text1_Change()
textval = Text1.Text
If IsNumeric(textval) Then
numval = textval
Else
Text1.Text = CStr(numval)
End If
End Sub
Right click on control box > component > Control -> Microsoft Masked Edit Control 6.0.
Or with normal textbox:
Private Sub Text1_Validate(Cancel As Boolean)
Cancel = Not IsNumeric(Text1.Text)
End Sub
Check this out:
http://www.vbforums.com/showthread.php?t=350067
You need to check each keypress, or you can do one validation at the end.