Como sumar y restar en tiempo real en DOS Texbox, es decir en uno de ellos que salga el resultado.?

Espero me puedan ayudar:

Tengo dos texbox para dos ejecuciones distintas:

1er CASO: Cuando voy a retirar:

texbox1= "numero de stock,"

texbox2= "cantidad de lo que quiero retirar"

si texbox1 es mayor > y el texbox2 es menor >  Then se ejecuta la acción

else 

msgbox "la cantidad excede el stock"

texbox2=""

(En esta acción lo que quiero es que ni bien este digitando un numero en el txbox2 ya empieze a restar en el texbox 1)

Ahora en esos mismos texbox

2do CASO: Cuando voy a modificar

Resulta que cuando quiero modificar, traigo los datos a los dos texbox al que corresponda

Texbox1 registra la informacion existente actual

Texbox 2 (registra el dato que se guardo anteriormente)

Resulta que quiero disminuir o aumentar la cantidad en el texbox2 y tambien quiero que cuando haga esa ejecucion, automaticamente figure en tiempo real en el texbox1

Estoy aprendiendo, soy nuevo en este fascinante mundo de VBA en excel. Por favor ayudenme

La unica información que tengo en cada texbox es esto pero de ahi no se por donde empezar;

______________________________________________________________________

Private Sub txt_cantidad_Change()

Me.txt_cantidad.Value = Right("00" & Me.txt_cantidad, 3)
If txt_cantidad.Value <= txt_existencia.Value Then

calcular
Else
Me.txt_cantidad = ""

End If

End Sub

_____________________

Private Sub txt_existencia_Change()

Me.txt_existencia.Value = Right("00" & Me.txt_existencia, 3)

End Sub

1 Respuesta

Respuesta
1

Para hacer cálculos con textbox debes utilizar otro evento.

El evento CHANGE se ejecuta por cada cambio en el control. Es decir que ingresas un dígito... se ejecuta el evento, ingresas otro dígito y nuevamente se ejecuta. Si observas la imagen siguiente se trataría del cuadro azul que partiendo de 100 al ingresar 30 restó primero 3 y luego 30.

También si haces un cambio como al darle el nuevo formato se ejecuta... sería el caso del cuadro rojo. Restó 4 en lugar de 2 por las 2 ejecuciones.

Por lo tanto los cálculos debes realizarlos en el evento AfterUpdate o Exit.

Private Sub txt_cantidad_AfterUpdate()
'x Elsamatilde
txt_cantidad.Value = Right("00" & txt_cantidad, 3)
If txt_cantidad.Value <= txt_existencia.Value Then
    'colocar el saldo en otro control ... opción 1
    TextBox3 = txt_existencia - txt_cantidad
    'o ajustar las existencias automáticamente .... opción 2
    txt_existencia = txt_existencia - txt_cantidad
Else
    txt_cantidad = ""
End If
End Sub

La primer opción es por si quieres mostrar el saldo en algún otro control, sino directamente borra esa línea.

TE invito a mirar el video 11 de mi canal (dejo enlace al pie). Allí comento algunos tips para buscar y copiar material actualizado ;)

Muy agradecido Elsa por  responderme... he empezado a seguirte, ya me suscribí... como hice mención soy nuevo en esto y me he vuelto en estos 2 meses un amante de VBA en Excel.

Vi un video de Sistema de Control de Inventario y me rete en hacerlo... ya voy en un 95% terminado pero me falta ese detalle que no logro solucionar... se que no tengo las palabras técnicas para explicarlo pero por favor si pudieras ver solo el minuto 10 de este video entenderás lo que quiero hacer...  Desde Lima Perú Muchas Gracias 

Las instrucciones que te dejé para el txt_cantidad resuelven tu consulta, igual que en el video, de cómo actualizar las existencias. No se qué otro paso aún te falta. Si luego necesitas otras tareas deberás ir dejando nuevas consultas. Un formulario tiene gran cantidad de procesos donde intervienen no solo el proceso en sí (Change, Exit, AfterUpdate, etc) sino también las propiedades de cada control. Y hay que resolverlos uno a uno.

Ahora, yo aconsejo utilizar controles Label en lugar de TextBox cuando en esos controles el usuario no va a ingresar (o tipear) datos. Así no reciben el foco y se evita que se modifique por error ese contenido. Sino hay que inhabilitarlo previamente para evitar esa situación.

Entonces si fuese un Label ya no usarás 'value' sino 'caption' cuando muevas el valor encontrado de las existencias. Por ejemplo, para pasar datos de una lista a un Label sería:

lbl_existencia.Caption = ListBox1.List(ListBox1.ListIndex, 2)
'o lo que es lo mismo:
lbl_existencia = ListBox1. List(ListBox1. ListIndex, 2)

PD) Si te interesa ir practicando te invito a ver los videos 27-28 (Crear, modificar y eliminar registros de una base de datos) con otro modelo más avanzado en video N° 6.

También dejé pequeñas aplicaciones en los videos 43-44 (Planilla de turnos) y 51 (sistema de votación o encuestas).

Y por supuesto, para tener todos los temas ordenados y en un solo lugar mi mejor recomendación es el manual de Userforms. Desde el enlace podrás descargar un índice y demo de su contenido.

Sdos!

http://aplicaexcel.com/manuales/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas