Pasar datos de un formulario a otro libro de excel

Necesito ayuda para refinar una parte de mi código que no consigo lo mande a las celdas deseadas.

La parte donde tengo el problema es en los listbox.

Gracias

 Private Sub Imprimirparte()
Dim objExcel As Application
Dim RutaArchivo As String
Dim Texto As String
Dim Fila As Integer
Set objExcel = CreateObject("Excel.Application")
With objExcel
    RutaArchivo = ThisWorkbook.Path & "\parte_tmp.xlsx"
    If IsFileOpen(RutaArchivo) Then
            MsgBox "El libro debe estar cerrado para proceder."
            Exit Sub
    Else
        '
        With .Workbooks.Open(RutaArchivo)
       .Worksheets("Hoja1").Range("parte").ClearContents
        Fila = 18
        Do While .Worksheets("Hoja1").Cells(18, 1) <> ""
            Fila = Fila + 1
        Loop
final = Fila
                .Worksheets("Hoja1").Range("D2").Value = Me.cbo_not
                .Worksheets("Hoja1").Range("C3").Value = Me.txt_descrip
                .Worksheets("Hoja1").Range("G2").Value = Me.txt_fecha
                .Worksheets("Hoja1").Range("B8").Value = Me.eje1
                .Worksheets("Hoja1").Range("B10").Value = Me.eje2
                .Worksheets("Hoja1").Range("B12").Value = Me.eje3
            For i = 0 To Me.ListBox1.ListCount - 1
                .Worksheets("Hoja1").Cells(final, 1) = Me.ListBox1.List(i, 0) ' se tiene que grabar en la celda A18
                .Worksheets("Hoja1").Cells(final, 2) = Me.ListBox1.List(i, 1) ' se tiene que grabar en la celda D18
                .Worksheets("Hoja1").Cells(final, 3) = Me.ListBox1.List(i, 2) ' se tiene que grabar en la celda F18
                final = final + 1
            Next
             For J = 0 To Me.ListBox2.ListCount - 1
                .Worksheets("Hoja1").Cells(final, 1) = Me.ListBox2.List(i, 0) ' se tiene que grabar en la celda N42
                .Worksheets("Hoja1").Cells(final, 2) = Me.ListBox2.List(i, 1) ' se tiene que grabar en la celda P42
                final = final + 1
            Next
'Establecer área de impresión y enviar al impresor.
.Worksheets("Hoja1").PageSetup.PrintArea = "parte"
.Worksheets("Hoja1").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
                .Close SaveChanges:=True
            End With
        End If
    .Quit
End With
End Sub

1 Respuesta

Respuesta
2

Tienes que guardar en la fila 18 o en lo que diga la variable "Final"

Prueba esto:

For i = 0 To Me.ListBox1.ListCount - 1
    . Worksheets("Hoja1").Cells(Final, "A") = Me. ListBox1. List(i, 0) ' se tiene que grabar en la celda A18
    . Worksheets("Hoja1").Cells(Final, "D") = Me. ListBox1. List(i, 1) ' se tiene que grabar en la celda D18
    . Worksheets("Hoja1").Cells(Final, "F") = Me. ListBox1. List(i, 2) ' se tiene que grabar en la celda F18
    Final = Final + 1
Next
 For J = 0 To Me.ListBox2.ListCount - 1
    . Worksheets("Hoja1").Cells(Final, "N") = Me. ListBox2. List(i, 0) ' se tiene que grabar en la celda N42
    . Worksheets("Hoja1").Cells(Final, "P") = Me. ListBox2. List(i, 1) ' se tiene que grabar en la celda P42
    Final = Final + 1
Next

¡Gracias! 

Los datos del listbox1 tienen que empezar a guardarse en  la fila18 y los del listbox2 en la fila 42

sl2

Tiene importancia que la celda donde va el dato sea una celda combinada?

No importa si la celda es combinada.

¿Probaste los cambios que te envié?

Si , no funciona.

los datos del listbox1 no aparecen y los del listbox2 aparecen en la fila 18

Tendría que ver cómo tienes tus datos y cómo cargas el listbox y qué datos tienes en el listbox.

Si el listbox1 está vacío no va a poner nada, por eso no pone nada.

Y para el listbox2 debe iniciar en 42:

For i = 0 To Me.ListBox1.ListCount - 1
    . Worksheets("Hoja1").Cells(Final, "A") = Me. ListBox1. List(i, 0) ' se tiene que grabar en la celda A18
    . Worksheets("Hoja1").Cells(Final, "D") = Me. ListBox1. List(i, 1) ' se tiene que grabar en la celda D18
    . Worksheets("Hoja1").Cells(Final, "F") = Me. ListBox1. List(i, 2) ' se tiene que grabar en la celda F18
    Final = Final + 1
Next
'
Final = 48
'
 For J = 0 To Me.ListBox2.ListCount - 1
    . Worksheets("Hoja1").Cells(Final, "N") = Me. ListBox2. List(i, 0) ' se tiene que grabar en la celda N42
    . Worksheets("Hoja1").Cells(Final, "P") = Me. ListBox2. List(i, 1) ' se tiene que grabar en la celda P42
    Final = Final + 1
Next
Final = 42
'
 For J = 0 To Me.ListBox2.ListCount - 1
    . Worksheets("Hoja1").Cells(Final, "N") = Me. ListBox2. List(i, 0) ' se tiene que grabar en la celda N42
    . Worksheets("Hoja1").Cells(Final, "P") = Me. ListBox2. List(i, 1) ' se tiene que grabar en la celda P42
    Final = Final + 1
Next

corregí a 42

La pregunta no admite más respuestas

Más respuestas relacionadas