Mandar datos de dos listbox a una hoja de excel

Tengo el siguiente codigo necesito mandar los datos del listbox a la hoja 8 al mismo tiempo que mando la informacion del listbox 1, no consigo que lo hagan al mismo tiempo

Gracias de antemano

Private Sub btn_Procesar_Click()

Dim Fila As Integer
Dim Final As Integer
Dim Existencia As Integer
Dim altas As Integer

If Me.cbo_not.Text = Empty Or _
Me.txt_equipo.Text = Empty Or _
Me.txt_fecha.Text = Empty Or _
Me.txt_descrip.Text = Empty Then
End If

Fila = 2
Do While Hoja8.Cells(Fila, 1) <> ""
Fila = Fila + 1
Loop

Final = Fila
For i = 0 To Me.ListBox1.ListCount - 1
Hoja8.Cells(Final, 8) = Me.ListBox1.List(i, 0)
Hoja8.Cells(Final, 9) = Me.ListBox1.List(i, 1)
Hoja8.Cells(Final, 10) = Me.ListBox1.List(i, 2)
Hoja8.Cells(Final, 1) = Me.txt_fecha
Hoja8.Cells(Final, 2) = Me.cbo_not
Hoja8.Cells(Final, 3) = Me.txt_equipo
Hoja8.Cells(Final, 4) = Me.txt_descrip
Hoja8.Cells(Final, 5) = Me.eje1
Hoja8.Cells(Final, 6) = Me.eje2
Hoja8.Cells(Final, 7) = Me.eje3
' For J = 0 To Me.ListBox2.ListCount - 1
' Hoja8.Cells(Final, 11) = Me.ListBox2.List(i, 0)
' Hoja8.Cells(Final, 12) = Me.ListBox2.List(i, 1)
'Hoja8.Cells(Final, 13) = Me.ListBox2.List(i, 2)
Final = Final + 1
' ImprimirFactura
Next
End Sub

1 respuesta

Respuesta
1

Si debe recorrer todo el ListBox2 antes de seguir con el ListBox1 falta cerrar el bucle Form J = 0 y cada pase debe ser con el indice J

 For J = 0 To Me.ListBox2.ListCount - 1
' Hoja8.Cells(Final, 11) = Me.ListBox2.List(J, 0)
' Hoja8.Cells(Final, 12) = Me.ListBox2.List(J, 1)
'Hoja8.Cells(Final, 13) = Me.ListBox2.List(J, 2) 
next J

PERO, si lo que necesitas es que por cada elemento del ListBox1 se pase también el elemento del ListBox2 que se encuentra en la misma fila no uses 2 bucles sino uno solo donde el indice será i para los 2.

For i = 0 To Me.ListBox1.ListCount - 1
Hoja8.Cells(Final, 8) = Me.ListBox1.List(i, 0)
Hoja8.Cells(Final, 9) = Me.ListBox1.List(i, 1)
Hoja8.Cells(Final, 10) = Me.ListBox1.List(i, 2)
Hoja8.Cells(Final, 1) = Me.txt_fecha
Hoja8.Cells(Final, 2) = Me.cbo_not
Hoja8.Cells(Final, 3) = Me.txt_equipo
Hoja8.Cells(Final, 4) = Me.txt_descrip
Hoja8.Cells(Final, 5) = Me.eje1
Hoja8.Cells(Final, 6) = Me.eje2
Hoja8.Cells(Final, 7) = Me.eje3
  'For J = 0 To Me.ListBox2.ListCount - 1
Hoja8.Cells(Final, 11) = Me.ListBox2.List(i, 0)
Hoja8.Cells(Final, 12) = Me.ListBox2.List(i, 1)
Hoja8.Cells(Final, 13) = Me.ListBox2.List(i, 2)
Final = Final + 1
' ImprimirFactura
Next

PD) Te invito a mirar el video 11 de mi canal.... allí comento porqué debieran ser evitadas algunas expresiones e instrucciones al escribir código:  el modo de encontrar fila vacía, uso de Me, uso de Hoja8, ;)

Gracias Elsa

Con tu indicación ya me aparecen los datos de ambos listbox.

Lo que ocurre es que no aparecen en las mismas filas  y al volver a introducir una nueva búsqueda se mezclan los resultados.

no se si me estoy complicando por que los datos del segundo listbox no los necesito guardar, quería hacerlo para luego imprimir todos los datos del userform en el que realizo la búsqueda. 

Entonces aclara un poco más el tema. ¿Los necesitas o no a los datos del 2do Listbox?

También creo que copiaste mal el código que te envié, porque se ve claramente que van a la misma fila llamada Final... y luego recién se incrementa esa variable.

Hoja8.Cells(Final, 6) = Me.eje2
Hoja8.Cells(Final, 7) = Me.eje3
  'For J = 0 To Me.ListBox2.ListCount - 1
Hoja8.Cells(Final, 11) = Me. ListBox2.List(i, 0)
Hoja8.Cells(Final, 12) = Me. ListBox2.List(i, 1)
Hoja8.Cells(Final, 13) = Me. ListBox2.List(i, 2)
Final = Final + 1

Por favor revisa nuevamente mis respuestas y si aún no logras resolverlo aclara todo un poco más. Deja imágenes de los 2 listbox, si corresponden a la misma fila en las listas y si van o no en col siguientes en Hoja8, etc.

PD) No es necesario valorar antes de terminar el tema. Luego quizás la respuesta merece una valoración mejor ;)

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas