Eliminar línea en hoja1 desde mi listbox

Tengo un listBox y selecciono una línea y quiero borrarla en mi hoja1 de excel.

Tengo el siguiente código, y me selecciona en mi hoja1 la que no he seleccionado.

Y lógicamente borra la línea seleccionada de mi hoja 1.

Mi código es el siguiente.

'Eliminar el registro

Private Sub CommandButton4_Click()

Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO")

If Pregunta <> vbNo Then

    Fila = Me.ListBox1.ListIndex + 1

    Rows(Fila).Delete

Application.ScreenUpdating = True

End If

End Sub

Alguien me puede ayudar, no se lo que estoy haciendo mal.

1 respuesta

Respuesta
2

La explicación es que estás tomando como 'fila' de tu hoja la 'fila' del elemento seleccionado... pero eso estará bien si tus datos empiezan en fila 1.

Digamos que en tu listbox estás mostrando la lista de meses: Enero... Diciembre. Si seleccionas Febrero será el segundo elemento ... por lo tanto la instrucción:

Fila = Me.ListBox1.ListIndex + 1 te devolverá el valor 2 (la listas generalmente empiezan en 0)

Sabiendo en qué fila comienzan tus datos tendrás que sumarle esa diferencia a la instrucción. En la imagen mis datos empiezan en fila 3, por lo tanto a febrero le toca la fila 4 resultando la instrucción:

Fila = ListBox1.ListIndex + 3       '+1 + 2 de títulos = +3

PD) Dejé un par de videos explicando el tema de las listas y también en el último aclaro lo del ME. Te invito a verlos desde aqui:

Hola Elsa

He hecho lo que me has comentado y sigo igual adjunto un ejemplo, en rojo es en donde se me sitúa para borrar y en verde es lo que yo le indicado en mi listBox que tiene que borrar. 

Hay un desfase de 4 lineas.

He realizado varias pruebas cambiando 

Fila = ListBox1.ListIndex + 5 , 6 , 20 y sigue el mis criterio desfase de las 4 lineas.

Espero que me haya explicado lo que me sucede.

Gracias por la atención y la rapidez.

Un saludo Esteve

No, tenés 6 líneas de diferencia porque la fila 5 está vacía y tus datos empiezan en fila 6.

Fila = ListBox1.ListIndex + 6 

Para el registro seleccionado, listindex es = 9 y en tu hoja está en fila 15, por lo tanto es +6.

Supongo que no hace falta aclarar que las 2 tablas deben tener el mismo orden, eso está claro a la vista.

Y que si eliminás alguna fila de la hoja tenés que actualizar la lista. Sino ya no tendrán la misma cantidad de elementos.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas