I want to make a TextBox control that only accepts numerical values.
How can I do this in VB6?
I used this code in my project:
Private Sub txtReceiptID_KeyPress(KeyAscii As Integer)
Dim Keychar As String
If KeyAscii > 31 Then
Keychar = Chr(KeyAscii)
If Not IsNumeric(Keychar) Then
KeyAscii = 0
End If
End If
End Sub
Just select the control and the keyPress method and the IDE create the next method for you. Then add the next code inside the method
Private Sub txtControl_KeyPress(KeyAscii As Integer)
KeyAscii = RealKeyascii(txtControl, KeyAscii, 256 ^ 8)
End Sub
i usually use this code:
Private Sub text1_KeyPress(KeyAscii As Integer)
If Not IsNumeric(text1.Text & Chr(KeyAscii)) And Not KeyAscii = 8 Then KeyAscii = 0
End Sub
If Len(Text2.Text) > 0 Then
If IsNumeric(Text2.Text) = False Then
Text2.SetFocus
CreateObject("WScript.Shell").SendKeys "{BACKSPACE}"
End If
End If
TRY THIS CODE: DISABLES LETTER(A-Z,a-z) AND ACCEPTS BACKSPACE, DOTS, COMMAS AND NUMBERS(0-9) =)
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not (KeyAscii >= vbKeyA And KeyAscii <= vbKeyZ) And Not (KeyAscii >= 97 And KeyAscii <= 122) Then
Else
KeyAscii = 0
End If
End Sub
I let the API do it for me. I add this function to a .bas module and call it for any edit control that I need to set to numeric only.
Option Explicit
Private Const ES_NUMBER = &H2000&
Private Const GWL_STYLE = (-16)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'set an editbox to numeric only - return the previous
'style on success or zero on error
Public Function ForceNumeric(ByVal EditControlhWnd As Long) As Long
Dim lngCurStyle As Long
Dim lngReturn As Long
lngCurStyle = GetWindowLong(EditControlhWnd, GWL_STYLE)
If lngCurStyle <> 0 Then
lngReturn = SetWindowLong(EditControlhWnd, GWL_STYLE, lngCurStyle Or ES_NUMBER)
End If
ForceNumeric = lngReturn
End Function
To use it call the function with the handle of the TextBox.
Private Sub Form_Load()
Dim lngResult As Long
lngResult = ForceNumeric(Text1.hwnd)
End Sub