Problemas al calcular el % al utilizando 2 textbox

Estimado experto, tengo el siguiente problema que me gustaría me ayudaras a resolver:
Estoy trabajando en una userform que tiene 3 textbox, la textbox3 es un número entero, la textbox4 en un % y la textbox52 es el reslultado de aplicar el % de la text4 sobre el numero entero de la textbox3. Resulta que al salir de la textbox4 me da error. La rutina es la siguiente:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox3 = Format(TextBox3 / "#,##")
End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox4 = Format(TextBox4 / 100, "percent")
End Sub
Private Sub TextBox4_Change()
TextBox52 = Val(TextBox3) * Val(TextBox4) / 100
End Sub
NO se cual es el problema, espero tu valiosa ayuda.
Atentamente.
donghi

1 respuesta

Respuesta
1
El problema ocurre por que al cambiar el formato del textbox4 a porcentaje lo conviertes en texto, y al intentar dividir, pues arrojara un error.
La mejor solución es que no le pongas formato, quizás un label con el signo % al lado del texbox, pero si quieres intentaremos realizar un código.
Kimari, gracias por la sugerencia, de hecho había pensado en esa solución.   Sin embargo el error era por que en: TextBox3 = Format(TextBox3 / "#,##") agregué un / que no tiene nada que ver. Al reemplazarlo ya no arroja error y el textbox formateado como % se toma como número. Sin embargo, ahora tengo el problema que el separador de miles del número entero es considerado como decimal, es decir en vez de tomar 1.000 (mil) como tal lo considera como 1 (uno)
ej: textbox3 = 1000; textbox4 = 12%; resultado en textbox52 = 1,2 en vez de 120
Espero me puedas ayudar
donghi
No dividas de nuevo por 100 en el textbox52
TextBox52 = Val(TextBox3) * Val(TextBox4) 
De todas manera a mi me sigue reconociendo el contenido del texbox4 como texto -_-
Estimado experto, la mejor solución fue quitar el formato % al textbox4 y usar un label (tal como lo recomendaste en la respuesta 1). Al hacer esto se reconoce el formato para el número entero y la operación matemática se efectúa correctamente. Me di cuenta además que no es necesario volver a dar formato de número al textbox3 (ya estaba hecho con la función TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)).
Gracias por la guía.
Saludos
Donghi

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas