Borrar contenido de una tabla y también de listbox.

Les comento un poco el funcionamiento de mi botón.

Tengo una listbox que muestra una tabla ubicada en la hoja5, tengo una macro en un botón, que copia y pega los valores seleccionados en la listbox, y los envía a otra tabla, ubicada en la hoja6.

Hasta ahi, barbaro.

El codigo que uso es el siguiente:

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Dim uf, a As Integer
uf = Sheets("finalizadoreparaciones").Range("A" & Rows.Count).End(xlUp).Row
uf = uf + 1
a = ListBox1.ListCount
For a = 0 To a - 1
   If ListBox1.Selected(a) Then
   Sheets("finalizadoreparaciones").Cells(uf, 1) = ListBox1.List(a, 6)
   Sheets("finalizadoreparaciones").Cells(uf, 2) = ListBox1.List(a, 1)
   Sheets("finalizadoreparaciones").Cells(uf, 3) = ListBox1.List(a, 2)
   Sheets("finalizadoreparaciones").Cells(uf, 4) = ListBox1.List(a, 3)
   Sheets("finalizadoreparaciones").Cells(uf, 5) = ListBox1.List(a, 4)
   uf = uf + 1
End If
Next a
Finalizar.Show
Application.ScreenUpdating = True
End Sub

Ahora lo que he querido hacer y no pude, es que el mismo boton, identifique la fila seleccionado en la listbox, y una vez que realizo lo anterior, borre el registro de la hoja5, y tambien de la listbox.

¿Me explico?

¿Cómo podría hacer?

1 Respuesta

Respuesta
2

Necesito ver cómo cargaste los datos en el listbox.

Puedes poner aquí también ese código.

Hola Dante, gracias por tu respuesta.

Los datos ingresan a la listbox con este código:

Private Sub userform_activate()
Me.ListBox1.RowSource = "Tabla7"
Me.ListBox1.ColumnCount = 10
Me.ListBox1.ColumnWidths = "80;180;80;80;80;80;80;80;80;80"
Me.ListBox1.ColumnHeads = True
End Sub

Prueba lo siguiente. Perdona que haya cambiado algunas cosas en tu código.

Private Sub CommandButton2_Click()
  Dim uf As Long, i As Long, sh As Worksheet, tbl As ListObject
  Dim cad As String, sCad As Variant
  '
  Application.ScreenUpdating = False
  Set sh = Sheets("finalizadoreparaciones")
  Set tbl = Sheets("Hoja5").ListObjects("Tabla7")
  uf = sh.Range("A" & Rows.Count).End(xlUp).Row + 1
  '
  With ListBox1
    For i = 0 To .ListCount - 1
      If .Selected(i) Then
        sh.Cells(uf, 1) = .List(i, 6)
        sh.Cells(uf, 2) = .List(i, 1)
        sh.Cells(uf, 3) = .List(i, 2)
        sh.Cells(uf, 4) = .List(i, 3)
        sh.Cells(uf, 5) = .List(i, 4)
        uf = uf + 1
        cad = cad & i & "|"
      End If
    Next i
    '
    If cad <> "" Then
      sCad = Split(cad, "|")
      For i = UBound(sCad) To 0 Step -1
        If sCad(i) <> "" Then tbl.ListRows(Val(sCad(i)) + 1).Delete
      Next i
    Else
      MsgBox "No hay datos seleccionados"
    End If
  End With
  Finalizar.Show
  Application.ScreenUpdating = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas