Como resfrescar un textbox con una operación aritmética

Tengo un problema con mi formulario. El cual es que tengo un listbox con información de ventas y en textbox9 que recibe la suma de esas ventas y otro textbox10 donde se coloca el descuento. Es decir tengo esta sentencia

En el evento change

Textbox9 = cdbl(textbox9)- cdbl(textbox10)

Pero el problema es que cuando borro el dato en el textbox10 en el textbox queda como en la mwmoria el resultado es decir si el textbox9 tenia la suma de 114 y coloco en el textbox10 14 de descuento debería aparxe 100 pero me apardce 99 ese es otro error y luego al borrar el descuento no vuelve a su monto original.

2

2 Respuestas

178.325 pts. Programador - Administrador

Trata de ordenar mejor las cosas ¿el evento Change de qué objeto? ¿Qué datos exactos es qué colocas en esos TextBox? Además de la resta que muestras ¿hay alguna otra operación qué sea parte del problema y no hayas mencionado?

Abraham Valencia

Hola Abraham. En evento change es del textbox10 del descuento. Es decir al colocar el monto del descuento este pasa hacer el resultado aritmética al textobx9. No tengo ninguna otra operacion. Solo que el textbox9 rexibe dos tipo de operaciones primero la suma de laa ventas del listbox y luego la resta si el textbox10 tiene algun monto. Solo el error es que si al descuento tiene un monto y luego lo borro porque no era ese el descuento sino otro monto ya no vuelve el textbox9 al monto original antes del descuento. Y otro error adiciona es que me di cuenta que si el resultaso del listbox es 114 y le colocamos un descuento de 14 este no sale 100 sino 99. Por favor tu ayuda. Son dos errores. El que no resta corrextamente y que no vuelve a el resultado original a quitar el monto del descuento. Gracias de antemano

Si me envías tu correo te puedo pasar el formulario para que me entiendas mejor. Ya que espero así me entiendas mejor

Si usas el evento "Change" es lógico que la operación te dé como resultado 99. Dicho evento detecta cualquier cambio en el TextBox y primero resta 1 (primer dígito que ingresas) y luego resta 14, (ya los dos dígitos juntos) con lo que el 114 queda convertido en 99: 11-1=113, 113-14=99. Quizá te sea más conveniente usar el evento "Exit".

Sobre que modifiques el descuento por algún error, es lógico que no retorne al valor anterior, ya hizo la operación y el VBA no tiene algo como "deshacer". Para lograr un efecto así tú tendrías que programarlo y te aseguro que será tedioso pero, como recomiendo en el párrafo anterior, quizá con lo del cambio de evento te ahorres también éste problema.

Salu2

Abraham Valencia

122.150 pts. Si de mis mayores gustos, mis disgustos han nacido,...

Los problemas que tienes esta en lo siguiente

1.-En operaciones aritméticas con el change generan ruido porque en cuanto tecleas un numero se dispara el evento y al no tener completos los dos textbox te marca error, en vez del evento change cambialo por el evento afterupdate este evento disparara la macro una vez que completes el numero y des enter

2.- Para refrescar o más bien para reiniciar los texbox o limpiarlos requieres un botón comando como te muestro en a siguiente pantalla

y este el codigo que ocupas

Private Sub CommandButton1_Click()
TextBox1 = Empty
TextBox2 = Empty
End Sub
Private Sub TextBox1_AfterUpdate()
suma
End Sub
Private Sub TextBox2_AfterUpdate()
suma
End Sub
Sub suma()
If TextBox1 = Empty Or TextBox2 = Empty Then GoTo salir
TextBox1 = CDbl(TextBox1) - CDbl(TextBox2)
salir:
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas