Enviar datos a la primera celda vacía

Tengo esta código para enviar datos a una tabla de excel. El problema que tengo es que no lo hace en la primera celda vacía que encuentra si no en la ultima celda dentro del rango dinámico. El Rango se llama Dades_taula y es una tabla. Me gustaría que al los datos salieran siempre en la primera celda vacía.
¿Qué estoy haciendo mal? ¿Por qué no me busca la primera celda vacía del la tabla?

Private Sub Enviar_Click()
Dim dades As Worksheet: Set dades = Sheets("dades")
Dim Dades_taula As ListObject: Set Dades_taula = dades.ListObjects("Dades_taula")
Dim Dades_taulaRow As ListRow: Set Dades_taulaRow = Dades_taula.ListRows.Add
Dim totalArt As Long: totalArt = Me.list_productes.ListCount
Dim i As Long
If FA.value = Empty Then
FA_final.Caption = "-"
End If
If PAD.value = Empty Then
pad_final.Caption = "-"
End If
If totalArt > 0 Then
    For i = 0 To totalArt - 1
        Dades_taulaRow.Range(i + 1, 1).value = Me.num_equipament_final.Caption
        Dades_taulaRow.Range(i + 1, 2).value = Me.tipologia_final.Caption
        Dades_taulaRow.Range(i + 1, 3).value = Me.nom_equipament_final.Caption
        Dades_taulaRow.Range(i + 1, 4).value = Me.municipi.value
        Dades_taulaRow.Range(i + 1, 5).value = Me.comarca.value
        Dades_taulaRow.Range(i + 1, 6).value = Me.Entitat.Caption
        Dades_taulaRow.Range(i + 1, 7).value = Me.programa_final.Caption
        Dades_taulaRow.Range(i + 1, 8).value = Me.FA_final.Caption
        Dades_taulaRow.Range(i + 1, 9).value = Me.pad_final.Caption
        Dades_taulaRow.Range(i + 1, 10).value = Me.proveidor_final.Caption
        Dades_taulaRow.Range(i + 1, 11).value = Me.list_productes.List(i, 0)
        Dades_taulaRow.Range(i + 1, 12).value = Me.list_productes.List(i, 1)
        Dades_taulaRow.Range(i + 1, 13).value = Me.total_pad.Caption
        Dades_taulaRow.Range(i + 1, 14).value = Me.data.value
    Next i
Else
    MsgBox "No hi ha material a la llista", vbInformation, "Res..."
End If
MsgBox ("ENREGISTRAT CORRECTAMENT")
End sub

1 Respuesta

Respuesta
1

[Hola

Me parece que el error viene de dar el valor a la siguiente variable:

totalArt = Me.list_productes.ListCount

¿Qué tiene que ver ese "List_productes" con tu Tabla? Lo lógico es que tu variable use el número de registros de la tabla, algo así:

totalart = Dades_taula.ListRows.Count

Y obvio vas ajustando las líneas en que envías los datos, pero por supuesto solo tú puedes probarlo ya que no podemos ver tu archivo. Ojo, adapta lo que te comento, no solo copies y pegues.

Abraham Valencia

en list_productres tengo los productos que conforman el pedido.
Como he copiado lo que me has pasado e intentado adaptarlo pero me da un error 381 en:

 Dades_taulaRow.Range(i + 1, 11).value = Me.list_productes.List(i, 0)

Como puedo adaptarlo?

Ya esta muchas gracias Abraham

en este caso me pasa lo mismo, cual es el error?

ThisWorkbook.Activate
        Worksheets("Proveïdors").Activate
         Range("a1000000").End(xlUp).Offset(1, 0).Select
                 ActiveCell.Offset(0, 0) = TextBox1.value
Formulari_proveidor.list_proveidor.RowSource = ("A2:A") & Worksheets("Proveïdors").Range("A" & Rows.Count).End(xlUp).Row
MsgBox ("S'ha enregistrat un nou PROVEÏDOR")
Worksheets("Dades").Activate
TextBox1.value = ""

Nuevas preguntas se hacen en nuevos post, pero en todo caso, igual no se entienda cuál es el puntual problema en ese retazo de código

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas