Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim intDummyDecimalSymbol As Integer
intDummyDecimalSymbol = IIf(InStr(1, Text1.Text, Chr(GetDecimalSymbol)) = 0, GetDecimalSymbol, 0)
If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 8 Or KeyAscii = 45 Or KeyAscii = intDummyDecimalSymbol) Then KeyAscii = 0
End Sub
Private Function GetDecimalSymbol() As Integer
'akan memperoleh 44 untuk koma (,) dan 46 untuk (.) dan lain sebagainya.
GetDecimalSymbol = Asc(Mid$(1 / 2, 2, 1))
End Function
Kode di atas akan sangat merepotkan, apabila harus memvalidasi banyak TextBox. Maka buatlah menjadi sederhana dengan menyimpannya pada module agar dapat diakses oleh seluruh form.
'Simpan dalam module
Public Function GetNumericAndDecimal(txt As TextBox, Keyascii As Integer) As Integer
Dim intDummyDecimalSymbol As Integer
intDummyDecimalSymbol = IIf(InStr(1, txt.Text, Chr(GetDecimalSymbol)) = 0, GetDecimalSymbol, 0)
If Not ((Keyascii >= 48 And Keyascii <= 57) Or Keyascii = 8 Or Keyascii = 45 Or Keyascii = intDummyDecimalSymbol) Then
GetNumericAndDecimal = 0
Else
GetNumericAndDecimal = Keyascii
End If
End Function
Public Function GetDecimalSymbol() As Integer
'akan memperoleh 44 untuk koma (,) dan 46 untuk (.) dan lain sebagainya.
GetDecimalSymbol = Asc(Mid$(1 / 2, 2, 1))
End Function
Contoh penggunaan:
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = GetNumericAndDecimal(Text1, KeyAscii)
End Sub