hola te paso esta rutina espero te sirva
usala como se indica
saludos
isidroalmaguer
Function pubNumerico(pKeyAscii As Integer, Optional pTxt As TextBox, Optional pDecimales As Integer) As Integer
´ Agregar esta función al evento Keypress de un Textbox
´ para validar que se esté tecleando un número ya sea entero o decimal
´ requerido:
´ pKeyAscii es el código Ascii del caracter
´ opcionales:
´ pTxt Texbox donde se está capturando (sólo en caso de que ocupe decimales)
´ pDecimales Cantidad de dígitos decimales permitidos (sólo en caso de que ocupe decimales)
If (IsMissing(pDecimales) Or pDecimales = 0) Or IsMissing(pTxt) Then
´ captura de un número entero
If InStr("0123465789", Chr(pKeyAscii)) > 0 Or pKeyAscii = 8 Then
´ es número o backspace -> OK
pubNumerico = pKeyAscii
Else
´ es otro tipo de caracter -> ANULAR
Beep
pubNumerico = 0
End If
Else
´ inicia captura de número con decimales
´validación
If pTxt.MaxLength = 0 Then
Beep
MsgBox "Especificar propiedad Maxlength del TextBox " & pTxt.Name, vbCritical, "Error Interno"
pubNumerico = 0
Exit Function
End If
If InStr(pTxt, ".") > 0 And Chr(pKeyAscii) = "." Then
´ están tratando de teclear un punto y ya hay uno
Beep
pubNumerico = 0
Exit Function
End If
´validación
If InStr(pTxt, ".") > 0