Varios textbox ingresar importes y sumar
Tengo 4 textbox y un label ingreso un importe en el primer textbox apretó enter me posiciono en el segundo texbox ingreso otro importe y apretó enter y así hasta el cuarto textbox l lo que necesito es que me los vaya sumando en el label a medida que lo voy ingresando
Ho la Eduardo:
Prueba lo siguiente:
Private Sub TextBox1_Change() Call sumar End Sub Private Sub TextBox2_Change() Call sumar End Sub Private Sub TextBox3_Change() Call sumar End Sub Private Sub TextBox4_Change() Call sumar End Sub Sub sumar() Dim i As Long Dim tot As Double For i = 1 To 4 With Controls("TextBox" & i) If .Value <> "" Then tot = tot + CDbl(.Value) End If End With Next Label1.Caption = tot End Sub
Recomendado:
Sal u dos
Dante Amor
Un fenmeno Dante como siempre me ayudas muchísimo pero me gustaría agregar dos cosas los formatos decimales de pesos en todo y poder ingresar en los texbox un numero negativo y los reste es decir en cualquier texbox ingreso 15.000 y en otro -5000 el resultado sea 10.000 y en color rojo en el label gracias
Hola dante te molesto algo que me olvide cuando voy ingresando importe en los texbox y llego al ultimo después de ingresar un importe necesito que vuelva la primero para y haga el recorrido pero en azul para ir modificando el importe que necesite gracias
Qué quieres en azul, en rojo, ¿las números o el fondo del textbox?
Prueba lo siguiente:
Option Explicit Private Sub TextBox1_Change() Call sumar End Sub Private Sub TextBox2_Change() Call sumar End Sub Private Sub TextBox3_Change() Call sumar End Sub Private Sub TextBox4_Change() Call sumar End Sub Private Sub TextBox1_Enter() Call SinFormato(TextBox1) End Sub Private Sub TextBox2_Enter() Call SinFormato(TextBox2) End Sub Private Sub TextBox3_Enter() Call SinFormato(TextBox3) End Sub Private Sub TextBox4_Enter() Call SinFormato(TextBox4) End Sub Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Call ConFormato(TextBox1) End Sub Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Call ConFormato(TextBox2) End Sub Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean) Call ConFormato(TextBox3) End Sub Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) Call ConFormato(TextBox4) TextBox1.SetFocus End Sub Sub SinFormato(tbx As MSForms.TextBox) If tbx.Value <> "" Then tbx.Value = CDbl(tbx.Value) tbx.ForeColor = &HFF0000 'azul End If End Sub Sub ConFormato(tbx As MSForms.TextBox) If tbx.Value <> "" Then tbx.Value = Format(tbx.Value, "$#,##0.00") tbx.ForeColor = &H80000012 'negro End If End Sub Sub sumar() Dim i As Long Dim tot As Double Dim wcolor For i = 1 To 4 With Controls("TextBox" & i) If .Value <> "" Then If .Value <> "-" Then tot = tot + CDbl(.Value) End If End If End With Next If tot < 0 Then wcolor = &HFF& Else wcolor = &H80000012 Label1.Caption = Format(tot, "$#,##0.00") Label1.ForeColor = wcolor End Sub
Recomendaciones:
Sal u dos
Dante Amor
todo perfecto dante pero me podes corregir esto necesito que cuando lo coloree de azul para modificar salga el numero con los punto y la como se ingreso gracias
Cambia el código por lo siguiente:
Observa que al inicio del código puse una variable, debe ir al inicio de todo el código.
Option Explicit Dim formateando As Boolean Private Sub TextBox1_Change() Call sumar End Sub Private Sub TextBox2_Change() Call sumar End Sub Private Sub TextBox3_Change() Call sumar End Sub Private Sub TextBox4_Change() Call sumar End Sub Private Sub TextBox1_Enter() Call CuandoEntra(TextBox1) End Sub Private Sub TextBox2_Enter() Call CuandoEntra(TextBox2) End Sub Private Sub TextBox3_Enter() Call CuandoEntra(TextBox3) End Sub Private Sub TextBox4_Enter() Call CuandoEntra(TextBox4) End Sub Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Call CuandoSale(TextBox1) End Sub Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Call CuandoSale(TextBox2) End Sub Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean) Call CuandoSale(TextBox3) End Sub Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) Call CuandoSale(TextBox4) TextBox1.SetFocus End Sub Sub CuandoEntra(tbx As MSForms.TextBox) If tbx.Value <> "" Then formateando = True 'tbx.Value = Format(CDbl(tbx.Value), "#.00") tbx.ForeColor = &HFF0000 'azul formateando = False End If End Sub Sub CuandoSale(tbx As MSForms.TextBox) If tbx.Value <> "" Then formateando = True tbx.Value = Format(tbx.Value, "$#,##0.00") tbx.ForeColor = &H80000012 'negro formateando = False End If End Sub Sub sumar() Dim i As Long Dim tot As Double Dim wcolor If formateando = True Then Exit Sub For i = 1 To 4 With Controls("TextBox" & i) If .Value <> "" Then If .Value <> "-" Then tot = tot + CDbl(.Value) End If End If End With Next If tot < 0 Then wcolor = &HFF& Else wcolor = &H80000012 Label1.Caption = Format(tot, "$#,##0.00") Label1.ForeColor = wcolor End Sub
Revisa lo siguiente:
https://m.youtube.com/watch?v=HfFCtMl189U
Sal u dos Dante Amor
Hola dante tengo un problema te puedo mandar mi archivo para que lo revises me anda perfecto lo que necesitaría es que me coloree en azul como te pedí el que me mandaste tiene un problema cundo junto todo dentro de un frame no me anda puede ser que te mande el archivo así me lo revisas
"Es que me coloree en azul como te pedí "
No entiendo a qué te refieres con azul.
Te pregunté:
"Qué quieres en azul, en rojo, ¿las números o el fondo del textbox?"
Y no contestaste a mi pregunta. Debes poner atención a mis comentarios, para que de esa forma te entregue una solución adecuada.
En azul dante para poder modificar o borrar el importe, el tema es que me gustaría mandarte el archivo para que veas así es más fácil porque en el mismo formular hay en dolares y en pesos
Mira dante aquí te mando lo que es el formulario que necesito.que vendría ser la caja diaria de dolares y pesos los importes del frame PC los toma de la hoja de calulo después yo voy ingresando en los textbox los importe de dolares primero cuando llego al 4 texbox de dolares vuelve al primero que se va a poner en azul para poder modificar si quisiera y si apretó enter va al segundo textbox y así sucesivamente una vez que concilio la caja de dolares empiezo hacer la de pesos con el mismo prosedimento hasta concilia me explico, si me deja te mando el archivo así lo ves mejor y me ayudas
- Compartir respuesta
1 respuesta más de otro experto
Te había preparado un ejemplo en la consulta anterior pero como ya le habías enviado el libro al experto de Access lo dejé en suspenso,
Mirá, por cada control debieras tener estas 2 subrutinas: con una se controla que solo se ingresen valores y coma y con la otra se acumula en una variable, se muestra en un Label ese acumulado y además se muestra en el Textbox y en el Label con formato... bien completita ;)
Te dejo los códigos para 2 controles. Tendrás que repetirlos para los otros que tengas. Es importante que no te olvides de la primera línea donde se declara la variable común a todas las macros.
Dim importe As Double Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If (KeyAscii < 48 And KeyAscii <> 44) Or KeyAscii > 57 Then KeyAscii = 0 MsgBox "Error en el dato. Solo se aceptan valores numéricos.", , "Atención" End If End Sub Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If TextBox1 <> "" Then importe = importe + CDbl(Val(TextBox1)): Label2.Caption = Format(importe, "#,###,##0.00") End If TextBox1 = Format(TextBox1, "#,###,##0.00") End Sub Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If (KeyAscii < 48 And KeyAscii <> 44) Or KeyAscii > 57 Then KeyAscii = 0 MsgBox "Error en el dato. Solo se aceptan valores numéricos.", , "Atención" End If End Sub Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) If TextBox2.Value <> "" Then importe = importe + CDbl(TextBox2.Value): Label2.Caption = Format(importe, "#,###,##0.00") End If TextBox2 = Format(TextBox2, "#,###,##0.00") End Sub
Les recomiendo el manual de Userforms: un capítulo para el desarrollo de cada control. Con libros de ejemplos listos para usar!
Excelente como siempre elsa pero me gustaría arreglar algo cuando cambio o borro algún numero del textbox que me lo reste del label no como ahora que me lo sigue sumando me explico y también si ingreso un numero negativo que me lo reste osea -100 por ejemplo graciqas
Pero si solicitas adicionales, no deberías haber valorado mi respuesta sin antes recibirlos. Estamos en fin de semana y mi respuesta iría recién mañana... aunque ya te recuerdo que sos el usuario que no sabe cómo modificar la votación o valoración ;(
Todos los pasos para realizar cálculos con controles TextBox, agregando formatos de moneda y actualizando resultados, también con formatos, en el video Nº 74 de mi canal:
https://www.youtube.com/watch?v=tlJ1pNk9bIw&list=PLrhlyizWZzOERwRMxIIy-BTP-CyXh_K5N&index=1&t=330s
Con libro de ejemplo para descargar!
Sdos!
- Compartir respuesta