¿Cómo hago para añadir datos de un listbox a varias hojas dependiendo de una condición?

Tengo mi formulario el cuál relleno; Un cuadro combinado presenta presenta las siguientes dos opciones: Efectivo y crédito.

Entonces al darle ingresar se van los datos al listbox. La idea es que los datos se agreguen siempre en hoja1 sea efectivo o crédito, pero si es crédito entonces los datos de crédito se añadirán también a hoja 2

Anexo imagen y código para que vean lo que trataba de hacer

If MsgBox("¿Desea Guardar?", vbYesNo, "Confirmar") = vbNo Then Exit Sub
'SI EL LISTBOX ESTA DESHABILITADO SE SALTA AL SIGUIENTE CODIGO
If Me.ListBox1.Enabled = False Then GoTo SaltarCodigo
Dim Fila As Integer
Dim Final As Integer
Dim NombreHoja As String
Dim NombreHoja3 As String
NombreHoja = "RVD"
NombreHoja3 = "Cartera"
    Fila = 4
    Do While Sheets(NombreHoja).Cells(Fila, 2) <> ""
        Fila = Fila + 1
    Loop
    Final = Fila
                For j = 0 To Me.ListBox1.ListCount - 1
                    Sheets(NombreHoja).Cells(Final, 2).NumberFormat = "dd/mm/yyyy;@"
                    Sheets(NombreHoja).Cells(Final, 2) = Format(Me.ListBox1.List(j, 0), "mm/dd/yyyy;@") 'Fecha
                    Sheets(NombreHoja).Cells(Final, 3) = Me. ListBox1. List(j, 1) 'codigoC
                    Sheets(NombreHoja).Cells(Final, 4) = Me. ListBox1. List(j, 2) 'cliente
                    Sheets(NombreHoja).Cells(Final, 5) = Me. ListBox1. List(j, 3) 'codigoP
                    Sheets(NombreHoja).Cells(Final, 6) = Me. ListBox1. List(j, 4) 'producto
                    Sheets(NombreHoja).Cells(Final, 11) = Me. ListBox1. List(j, 5) 'pago
                    Sheets(NombreHoja).Cells(Final, 9) = Me. ListBox1. List(j, 6) 'cantidad
                    Sheets(NombreHoja).Cells(Final, 10) = Me. ListBox1. List(j, 7) 'valor
                    If Me.pago.Text = "Crédito" Then
                    Sheets(NombreHoja3).Cells(Final, 2).NumberFormat = "dd/mm/yyyy;@"
                    Sheets(NombreHoja3).Cells(Final, 2) = Format(Me.ListBox1.List(j, 0), "mm/dd/yyyy;@") 'Fecha
                    Sheets(NombreHoja3).Cells(Final, 3) = Me. ListBox1. List(j, 1) 'codigoC
                    Sheets(NombreHoja3).Cells(Final, 4) = Me. ListBox1. List(j, 2) 'cliente
                    Sheets(NombreHoja3).Cells(Final, 5) = Me. ListBox1. List(j, 3) 'codigoP
                    Sheets(NombreHoja3).Cells(Final, 6) = Me. ListBox1. List(j, 4) 'producto
                    Sheets(NombreHoja3).Cells(Final, 11) = Me. ListBox1. List(j, 5) 'pago (En hoja cartera se registra en la columna evento)
                    Sheets(NombreHoja3).Cells(Final, 9) = Me. ListBox1. List(j, 6) 'cantidad
                    Sheets(NombreHoja3).Cells(Final, 10) = Me. ListBox1. List(j, 7) 'valor
                    Sheets(NombreHoja3).Cells(Final, 12) = Me. ListBox1. List(j, 8) 'cobro
                    'Sheets(NombreHoja3).Cells(Final, 13) = Me. ListBox1. List(j, 11) 'Comentarios
                    End If
                    Final = Final + 1
                Next

1 Respuesta

Respuesta

Prueba de la siguiente manera:

  Dim sh1 As Worksheet, sh2 As Worksheet
  Dim lr1 As Long, lr2 As Long, j As Long
  Set sh1 = Sheets("RVD")
  Set sh2 = Sheets("Cartera")
  lr1 = sh1.Range("B" & Rows.Count).End(3).Row + 1
  lr2 = sh2.Range("B" & Rows.Count).End(3).Row + 1
  With ListBox1
    For j = 0 To .ListCount - 1
      sh1.Cells(lr1, 2).NumberFormat = "dd/mm/yyyy;@"
      sh1.Cells(lr1, 2) = Format(.List(j, 0), "mm/dd/yyyy;@") 'Fecha
      sh1.Cells(lr1, 3) = .List(j, 1)   'codigoC
      sh1.Cells(lr1, 4) = .List(j, 2)   'cliente
      sh1.Cells(lr1, 5) = .List(j, 3)   'codigoP
      sh1.Cells(lr1, 6) = .List(j, 4)   'producto
      sh1.Cells(lr1, 11) = .List(j, 5)   'pago
      sh1.Cells(lr1, 9) = .List(j, 6)   'cantidad
      sh1.Cells(lr1, 10) = .List(j, 7)   'valor
      If Me.pago.Text = "Crédito" Then
        sh2.Cells(lr2, 2).NumberFormat = "dd/mm/yyyy;@"
        sh2.Cells(lr2, 2) = Format(.List(j, 0), "mm/dd/yyyy;@") 'Fecha
        sh2.Cells(lr2, 3) = .List(j, 1)   'codigoC
        sh2.Cells(lr2, 4) = .List(j, 2)   'cliente
        sh2.Cells(lr2, 5) = .List(j, 3)   'codigoP
        sh2.Cells(lr2, 6) = .List(j, 4)   'producto
        sh2.Cells(lr2, 11) = .List(j, 5)   'pago (En hoja cartera se registra en la columna evento)
        sh2.Cells(lr2, 9) = .List(j, 6)   'cantidad
        sh2.Cells(lr2, 10) = .List(j, 7)   'valor
        sh2.Cells(lr2, 12) = .List(j, 8)   'cobro
        lr2 = lr2 + 1
      End If
    lr1 = lr1 + 1
    Next
  End With

No me funcionó

con el código que usted me envía y el mío los guarda siempre en hoja RVD, pero no guarda los crédito en la hoja cartera

si se guardan los datos antes de ingresarlos al listbox si logra guardarlos en las dos hojas, pero ya dentro del listbox no lo hace

Si se guardan los datos antes de ingresarlos al listbox si logra guardarlos en las dos hojas, pero ya dentro del listbox no lo hace

No entiendo a qué te refieres.

Sí los guarda en la hoja "cartera" o no los guarda en la hoja "cartera".

Mi código guarda en la hoja "cartera" si el control "pago" es igual a "Crédito"

If Me.pago.Text = "Crédito" Then

Cuando ejecutas la macro, qué tienes en el control "pago"?

Lo que pasa es que tal vez no me di a entender o no expliqué completamente.

 Como puede ver se pueden guardar los datos directamente o le puedo dar ingresar al listbox para luego guardarlos todos. al darle guardar sin que se hayan ingresado los datos al listbox si cumple la función que yo quiero que es lo siguiente:

-si pago igual a "efectivo" entonces añadir a hoja RVD

-si pago es igual a "crédito " entonces añadir a hoja RVD y a hoja Cobranza

pero el problema se da cuando ingreso los datos al listbox ya que al darle guardar todo se guarda en hoja RVD y no guarda los registro que contienen en pago crédito para guardarlos en Cobranza

Sigo sin entender.

Pon aquí todo tu código.

Le puedo enviar mi archivo a algún correo?

Listo, se lo envié a este correo [email protected]

Gracias

Todos los datos deben estar aquí en el foro.



Pero el problema se da cuando ingreso los datos al listbox ya que al darle guardar todo se guarda en hoja RVD y no guarda los registro que contienen en pago crédito para guardarlos en Cobranza

Mi código hace lo que pediste.

Pone los datos en la hoja cobranza, pero en pago debe decir "Crédito"

If Me.pago.Text = "Crédito" Then

Pero no sé en dónde pusiste mi código. Por eso te pedí que pusieras aquí todo el código para revisarlo.

He grabado un vídeo para que usted me pueda entender mejor. 

Gracias por verlo y ayudar =D

https://drive.google.com/drive/folders/1P6NdQx9JUVHLmQ93MVfZ7NleynJdgjBC?usp=sharing 

Aun así, puedes poner aquí todo tu código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas