Module NUMERICO
Public SEPARADOR As Char
Public CODIGOSEPARADOR As Integer
Public Function NUMERO(TEXTO As String, CODIGO As Integer, ByRef COD As Integer, DECIMALES As Integer) As Boolean
REM COMENTARIO DE COMO LLAMAR LA FUNCIÓN
'se llama asi:
' Private Sub TextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox7.KeyPress
'Dim r As Integer
'If NUMERO(TextBox7.Text, AscW(e.KeyChar), r, 2) = False Then
REM el ejemplo es para 2 decimales
'e.Handled = True
'Exit Function
'End If
'e.KeyChar = ChrW(r)
'End Function
REM FIN DEL COMENTARIO
If CODIGOSEPARADOR = 0 Then SeparadorDecimales()
COD = CODIGO
If CODIGO = 46 Or CODIGO = 44 Then
COD = CODIGOSEPARADOR
CODIGO = COD
End If
If CODIGO = 45 And Len(TEXTO) = 0 Then
COD = 45
Return True
Exit Function
End If
If CODIGO = CODIGOSEPARADOR And Len(TEXTO) < 1 Then
COD = 48
Return True
Exit Function
End If
If CODIGO <> 8 Then
For n = 1 To Len(TEXTO)
If Mid(TEXTO, n, 1) = "," Then
If Len(TEXTO) - n + 1 > DECIMALES Then
Return False
Exit Function
End If
End If
Next
End If
If CODIGO = CODIGOSEPARADOR Then
For n = 1 To Len(TEXTO)
If Mid(TEXTO, n, 1) = "," Then
Return False
Exit Function
End If
Next
End If
If CODIGO = 8 Then
NUMERO = True
Return True
Exit Function
End If
If CODIGO = CODIGOSEPARADOR And DECIMALES > 0 Then
NUMERO = True
Return True
Exit Function
End If
If CODIGO >= 48 And CODIGO <= 57 Then
Return True
Exit Function
End If
Return False
End Function
Public Sub SeparadorDecimales()
SEPARADOR = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator
CODIGOSEPARADOR = AscW(SEPARADOR)
End Sub
End Module