Cómo se pueden eliminar de una Hoja los datos que se encuentran en un ListBox y que se carga desde otro ListBox

Tengo un UserForm con un ComboBox y 2 ListBox, el ListBox1 se carga a partir del ComboBox y eso me funciona a la perfección. Los datos que se cargan en el ListBox1 (una sola columna) al darle doble click se copian en el ListBox2, algo que también me funciona muy bien pero lo que necesito es que esos datos que se encuentran en el ListBox2 al darle a un botón se borren de una hoja que se llama ("SERIALES"). Tiene que buscar en dicha hoja el código que se encuentra en el ComboBox y eliminar los datos que se encuentran en el ListBox2 y están debajo de ese código. Al eliminar esos datos en especifico (no puede borrar toda la fila porque hay más códigos y más datos) deben subir los datos que quedan debajo de la celda vacía.

Cargo los datos seleccionados a otro ListBox porque no solo necesito que se borren de la hoja sino que también se pasan a otra hoja donde se imprimen y eso también me funciona perfectamente. Solo necesito que los datos que se encuentran en el ListBox2 se borren de la hoja "SERIALES" al darle a un botón y no queden celdas vacías luego de la eliminación.

1 respuesta

Respuesta
1

Deja una imagen de la hoja SERIALES para comprender cómo se encuentran y así poder desarrollar la macro.

La hoja "SERIALES": 

Si selecciono el código 5024H automáticamente en el ListBox1 me muestra los seriales que se encuentran debajo y allí comienzo a darle doble click a los seriales que necesito darle salida y se pasan al ListBox2 (por ejemplo el 20180000000002 y 20180000000004). Ya en este último al darle a un botón de guardar deberían borrarse de esta hoja lo seriales seleccionados y copiarse a otra hoja donde los imprimo. 

Todo me funciona excepto que se borren de acá y luego se suban los seriales que queden debajo para que no se muestre ninguna celda vacía. No se pueden eliminar filas porque como se observa hay otros códigos con otros seriales en las demás columnas. Espero me pueda ayudar y de antemano muchas gracias.

Entonces en ese botón de GUARDAR, además de tus instrucciones debes agregar estas otras:

'borrar de hoja SERIALES el contenido del Listbox2
If ListBox2.ListCount = 0 Then Exit Sub
'se busca la columna del código en hoja seriales, fila 5
Set hos = Sheets("SERIALES")
Set busco = hos.Rows("5:5").Find(ComboBox1.Text, LookIn:=xlValues, lookat:=xlWhole)
If Not busco Is Nothing Then
    colx = busco.Column
Else
    MsgBox "No se encontró el código en hoja Seriales"
    Exit Sub
End If
'se recorre el listbox2 eliminado los registros encontrados
For i = 0 To ListBox2.ListCount - 1
    dato = ListBox2.List(i)
    Set busco = hos.Columns(colx).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
    If Not busco Is Nothing Then
        hos.Cells(busco.Row, colx).Delete Shift:=xlUp
    End If
Next i

Sdos.

Elsa

* Aprovecha el cyber-mes en manuales Excel !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas