Eliminar información desde un listbox

Hola, tengo una base de datos con el nombre de varias personas y en un userform un buscador de personas. Al momento de poner el nombre de la persona, este resultado se me muestra en un listbox. Lo que quiero hacer es tener un botón de ELIMINAR que me borre en la base de datos el nombre de la persona seleccionada. Ahorita tengo un código que me funciona, pero al momento de haber más de un registro igual, sólo me agarra el primero que aparece en la base a pesar de haber seleccionado uno diferente en la listbox. Pongo el código que tengo para ver si alguien encuentra el error, si no queda claro les puedo mandar el excel. Ojalá alguien pueda ayudarme, gracias!!!

Dim fila As Integer
    Dim Final As Integer
If ListBox1.ListIndex = -1 Then Exit Sub
Final = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
If MsgBox("¿Seguro que quiere eliminar este Registro?", vbQuestion + vbYesNo) = vbYes Then
    For fila = 2 To Final
        If Hoja1.Cells(fila, 2) = xEmpleado Then
            Hoja1.Cells(fila, 1).EntireRow.Delete
            MsgBox "Registro eliminado", vbInformation + vbOKOnly
            ListBox1.RemoveItem ListBox1.ListIndex
            Exit For
        End If
    Next
End If
End Sub

2 respuestas

Respuesta
1

Si deseas eliminar 'todos' los registros de un mismo nombre, la respuesta dada por el experto podría funcionar... pero viendo tu libro entiendo que solo deseas eliminar el registro seleccionado en el listbox.

En ese caso hay que comparar no solo el nombre del empleado sino otros campos del listbox dependiendo de la col donde encontró el dato (creo que podía ser en A, C y otras más).

Ya me fijaré en tu libro y te lo envío con la macro ajustada.

Sdos

Elsa

Respuesta
1

El problema está en el for, es mejor empezar desde el final, algo así:

For fila=Final to 2 step -1
    'aquí continuas tu código
Next

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas