Listbox.Selected no encuentra argumento

Les cuento, tengo dos UserForm en vba de excel (2013) desde el Userform1 tengo un botón para abrir el UserForm2, en el UserForm1 tengo el siguiente código asociado a un botón para borrar unos datos dispuesto en un listbox que está allí

For irow = 0 To Me.ListBox4.ListCount - 1
       If Me.ListBox4.Selected(irow) = True Then
               Me.ListBox4.RemoveItem (irow)
       End If

Next

Me funciona perfecto, pero al poner el mismo código en el UserForm2 no me encuentra el argumento del .Selected, es raro, a veces funciona una vez y me lanza error y a veces no funciona a la primera, por favor me podría ayudar a buscar el error

1 Respuesta

Respuesta
2

H   o l a: Te anexo mis comentarios:

Primero. Si el userform2 lo llamas desde el userform1. Si estás en el Userform2, pero el UserForm1 sigue en ejecución, entonces debes hacer referencia al userform2, es decir, tienes esto:

For irow = 0 To Me.ListBox4.ListCount - 1

Cuando pones Me. te estás refiriendo al UserForm1, ya que el 1 es el que tiene el control. Por lo tanto, la línea debería ser así:

For irow = 0 To Userform2.ListBox4.ListCount - 1

Segundo. Cuando estás borrando desde 0 hasta el último dato del listbox, el contador va cambiando, por ejemplo, si tienes 3 registros, entonces tienes ocupadas las posiciones 0, 1 y 2

El For va desde el 0 hasta el 2, si borras el primer registro, ahora solamente tienes 2 posiciones 0 y 1, cuando el contador (irow), llega a 2, ahí te envía el error, porque ya no existe la posición 2.

Lo que se hace en estos casos, es contar desde el último hasta el 0.

El código quedaría así:

Private Sub CommandButton1_Click()
    For irow = UserForm2.ListBox4.ListCount - 1 To 0 Step -1
       If UserForm2.ListBox4.Selected(irow) = True Then
            UserForm2.ListBox4.RemoveItem (irow)
       End If
    Next
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas