martes, 23 de enero de 2018

VBA: Borrar elementos de un ListBox-.RemoveItem

Veremos una sencilla forma de eliminar elementos dentro de un ListBox en un UserForm (formulario de usuario), siempre y cuando se hayan cargado empleando el método .AddItem !!...
Esto, por tanto, no será válido para datos cargados con la propiedad .RowSource.


Tenemos un formulario con un ListBox llamado 'LstPais'

VBA: Borrar elementos de un ListBox



Para cargar los datos desde nuestra Tabla de países en la hoja de cálculo, asociaremos al evento _Initialize con el método .AddItem.
Mientras que asociado al evento Doble Clic (_DblClick) conseguiremos que el elemento sobre el que realicemos dicha acción se elimine...


Así pues añadimos los siguiente códigos dentro de la ventana de código de nuestro UserForm en nuestro proyecto de VB:

Private Sub UserForm_Initialize()
'recorremos cada celda del campo pais de nuestra Tabla
For Each pais In Range("TblPaises[paises]")
    'lo incorporamos como elemento nuevo del ListBox
    'empleando el método .AddItem
    Me.LstPais.AddItem pais.Value
Next pais
End Sub

Private Sub LstPais_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'condicionamos al evento Doble Clic el borrado del elemento
'si hay algo seleccionado lo borramos
If Me.LstPais.ListIndex >= 0 Then
    'con el método .RemoveItem eliminamos el elemento
    Me.LstPais.RemoveItem (Me.LstPais.ListIndex)
End If

End Sub



Podemos ejecutar nuestro formulario y comprobar el correcto uso...

VBA: Borrar elementos de un ListBox

No hay comentarios:

Publicar un comentario