Textbox solo acepte numero y también me acepte 3 decimales

Me pueden ayudar con este código lo que pasa necesito que un text box solo me acepte numero pero a su vez decimales le escribí el código pero no me acepta decimales solo números

Les adjunto el código que estoy utilizando y una imagen

Este código me permite ingresar los puntos decimales pero no le da el limite de puntos a ingresar me pueden ayudar para que el text box solo me acepte números y también 2 decimales como máximo

Private Sub TextBox2_Change()

Dim Texto As Variant
Dim Caracter As Variant
Dim Largo As Integer
On Error Resume Next
Texto = Me.TextBox2.Value
Largo = Len(Me.TextBox2.Value)
For i = 1 To Largo
Caracter = Mid(Texto, i, 1)
If Caracter <> "." Then
If Caracter < Chr(48) Or Caracter > Chr(57) Then
Me.TextBox2.Value = Replace(Texto, Caracter, "")
Else
End If
End If
Next i
On Error GoTo 0
Caracter = 0
Caracter1 = 0

If Hoja1.TextBox2.Text = "" Then
Hoja1.TextBox2 = "0"
End If
End Sub

1 Respuesta

Respuesta
2

Borra el código que tienes en tu evento change y pon los siguientes eventos en tu formulario:

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Por.Dante Amor
    Select Case KeyCode
        Case 8, 46: TextBox2 = Mid(TextBox2, 1, TextBox2.SelStart)
    End Select
End Sub
'
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Por.Dante Amor
    n = 5   'cantidad de entero
    d = 2   'cantidad de decimales
    lpunto = InStr(1, TextBox2, ".")
    Select Case KeyAscii
    Case Is < 46, Is > 57, 47: KeyAscii = 0
    Case 46: If lpunto > 0 Then KeyAscii = 0
    Case Is >= 48, Is <= 57
        If lpunto > 0 Then
            If Len(Mid(TextBox2, lpunto + 1)) = d And TextBox2.SelStart >= lpunto Then KeyAscii = 0
            If Len(TextBox2) = n + d + 1 Then KeyAscii = 0
        Else
            If Len(TextBox2) = n Then KeyAscii = 0
        End If
    End Select
End Sub

En el evento Keypress puedes poner cuantos entero y cuantos decimales quieres en el textbox:

n = 5 'cantidad de enteros
d = 2 'cantidad de decimales


Saludos. Dante Amor

Recuerda valorar la respuesta.

Estimado dante disculpa la falta de información que le he brindado pero no es un formulario en la una hoja en excel y me aparece este comentario cuando ingreso el código

Atentamente

Robert

¿Y qué tienes?

¿Es una celda?

¿Un textbox de formulario?

¿Un textbox de controlactiveX?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas