• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

Validar decimales en textbox

carlaferrerj

New member
Hola! Estoy haciendo un formulario y necesito que en una de las textbox me permita tener dos decimales. Conseguí esta fórmula y la verdad me funciona bastante bien, pero cuando se ingresa el textbox en la base de datos, lo hace como un texto y no como un número, de manera que tengo que convertirlo para que se vea con el valor de determinada moneda. Si ingreso un número entero eso no sucede. Adjunto el código para ver en qué pueden ayudarme.

Private Sub TELEFONO_Change()
If InStr(StrReverse(TELEFONO.Value), ",") > 3 Then
TELEFONO.Value = Left(TELEFONO.Value, Len(TELEFONO.Value) - 1)
TELEFONO.SelStart = Len(TELEFONO.Value)
End If
End Sub

Private Sub TELEFONO_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 And InStr(TELEFONO.Value, ",") > 0 Then
KeyAscii = 0
Exit Sub
End If
If KeyAscii <> 44 And KeyAscii <> 8 Then
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
KeyAscii = 0
End If
End If
End Sub

El código inicial en lugar de decir .Value era .Text, pero lo modifiqué a ver si solucionaba mi problema y no resultó. TELEFONO es el nombre del textbox (no voy a ingresar un teléfono). De antemano, muchas gracias.
 

Cacho R

Well-known member
Hola! Carla. Dos temas distintos:
  • Reemplaza todo el código que muestras por esto otro:
JavaScript:
Private Sub TELEFONO_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim Comma%, Punto%
Application.UseSystemSeparators = True
Comma = Asc(Application.International(xlDecimalSeparator))
Punto = Asc(Application.International(xlThousandsSeparator))
If KeyAscii = Punto Then KeyAscii = Comma
If 48 <= KeyAscii And KeyAscii <= 57 And InStr(StrReverse(TELEFONO), Chr(Comma)) < 3 Then Exit Sub
If KeyAscii <> Comma Or InStr(TELEFONO, Chr(Comma)) > 0 Then KeyAscii = 0
End Sub
_________________

  • Y a la hora de guardar el valor en una celda (A1, por ejemplo) inténtalo así:
JavaScript:
If TELEFONO <> Empty Then Range("A1") = 0 + TELEFONO Else Range("A1") = 0
¿Ok?...

Saludos, Cacho R.
 
Última edición:
Arriba