Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como ELIMINAR VARIOS ITEM de Listbox MULTISELECT de una Sola Vez en EXCEL VBA #511

Eliminar Items Listbox Multiselect

Como QUITAR VARIOS registros de Listbox MULTISELECT  a la Vez

Esta macro de Excel VBA muestra como se puede eliminar varios items de un Listbox Multiselect a la vez o en simultaneo, solo se necesita marcar o seleccionar que registros se quieren quitar del Listbox y presionando un botón se eliminan todos los registros seleccionados del Listbox Multiselect.

Aprende Excel con los mejores, haz click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.

  
 

En el vídeo verás la macro en acción con una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.

Suprimir filas de un LISTBOX MULTISELECT

Al presionar en el botón que se encuentra en el Libro Excel usado como ejemplo, se mostrará un formulario rellenando un Listbox Multiselect que contiene el formulario, con los datos de la Hoja1.

El Listbox que se encuentra en el formulario es un Listbox Multiselect, es decir que permite seleccionar varios items a la vez, también en el formulario se encuentra un botón color rojo que es el que ejecuta la macro de este ejemplo.

 

Quizás también interese leer:

Como Exportar Excel a TXT Separado con Pipes u Otro Caracter
Listado Atajos Teclado o Combinaciones De Teclas de Excel 
Como Enviar Whatsapp con Excel NUEVA Version 

 

Se debe seleccionar uno o varios registros o elementos que se desean eliminar, quitar o suprimir del Listbox Multiselect y luego presionar el botón rojo para eliminar las filas del Listbox Multiselect, quitando todos los registros seleccionados de una sola vez, hay que tener en cuenta que solo se quitan del Listbox Multiselect, no de la hoja de Excel que es de donde se cargaron los items al Listbox.

Si quieres aprender más sobre listbox de excel o ver otros ejemplos que podrías aplicar a tus proyectos te invito a ver el playlist sobre Listbox de Excel.

Explicación del código ELIMINAR filas de Listbox Multiselect

Es conveniente recordar antes de seguir que las filas como columnas del Listbox de Excel VBA se empiezan numerando desde la fila o columna CERO (0), es decir la primer fila sería la cero, es importante saberlo, porque en el caso del ejemplo en la fila cero o primer fila que se observa en el listbox se encuentra el encabezado, nombre de cada columna o header, hay que tenerlo encuentra sino lo podríamos eliminar por error.

El código aunque parezca difícil es bastante simple, lo que se hace es un bucle recorriendo las filas del Listbox Multiselect y determinando si se encuentran seleccionadas en ese caso se eliminan, el bucle elimina desde abajo hacia arriba para que no genere conflicto con el bucle en caso de eliminar filas, y se recorre desde la última fila del Listbox hasta la fila uno, recuerden que la fila cero es del encabezado.

El bucle que recorre las filas se hace con este código:

For x = Me.ListBox1.ListCount – 1 To 1 Step -1
 … mi código
Next x

Para determinar si una fila está seleccionada se hace con este código:

If a.Selected(x) = True Then

En caso que la linea recorrida en ese momento por el bucle esté seleccionada o sea True (verdadero) se procede a eliminar el item y se hace con el siguiente código:

a.RemoveItem x


Descarga el ejemplo llamado como eliminar filas de Listbox Multiselect de una sola vez o en simultaneo

El link para la descarga se encuentra al final del post, solicito aportar a sostener la esta web si está dentro de tus posibilidades, desde ya muchas gracias.

Código que se encuentra en el modulo

Sub muestra1()
UserForm1.Show
End Sub

Código que se Encuentra en Formulario 3


Private Sub CommandButton1_Click()
On Error Resume Next
Set a = UserForm1.ListBox1
For x = Me.ListBox1.ListCount – 1 To 1 Step -1
If a.Selected(x) = True Then
a.RemoveItem x
End If
Next x
End Sub


Private Sub TextBox1_Change()
On Error Resume Next
Set b = Sheets(«Hoja1»)
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
If Trim(TextBox1.Value) = «» Then
‘Me.ListBox1.List() = b.Range(«A2:H» & uf).Value
‘Me.ListBox1.RowSource = «Hoja1!A2:D» & uf
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
For i = 2 To uf
Me.ListBox1.AddItem b.Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 1) = b.Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 2) = b.Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 3) = b.Cells(i, 4)
Next i
‘Carga los datos de la cabecera en listbox
For ii = 0 To 7
UserForm1.ListBox1.List(0, ii) = Sheets(«Hoja1»).Cells(1, ii + 1)
Next ii

Exit Sub
End If

b.AutoFilterMode = False
Me.ListBox1.Clear
Me.ListBox1.RowSource = Clear
For i = 2 To uf
strg = b.Cells(i, 1).Value
If UCase(strg) Like «*» & UCase(TextBox1.Value) & «*» Then
Me.ListBox1.AddItem b.Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 1) = b.Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 2) = b.Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 3) = b.Cells(i, 4)
End If
Next i
Me.ListBox1.ColumnWidths = «20 pt;90pt;80 pt;80 pt»
End Sub
Private Sub TextBox2_Change()
On Error Resume Next
Set b = Sheets(«Hoja1»)
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
If Trim(TextBox2.Value) = «» Then
‘Me.ListBox1.List() = b.Range(«A2:H» & uf).Value
‘Me.ListBox1.RowSource = «Hoja1!A2:H» & uf
For i = 2 To uf
Me.ListBox1.AddItem b.Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 1) = b.Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 2) = b.Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 3) = b.Cells(i, 4)
Next i
‘Carga los datos de la cabecera en listbox
For ii = 0 To 7
UserForm1.ListBox1.List(0, ii) = Sheets(«Hoja1»).Cells(1, ii + 1)
Next ii
Exit Sub
End If

If Len(TextBox2) > 2 Then
b.AutoFilterMode = False
Me.ListBox1.Clear
Me.ListBox1.RowSource = Clear
For i = 2 To uf
strg = b.Cells(i, 2).Value
If UCase(strg) Like «*» & UCase(TextBox2.Value) & «*» Then
Me.ListBox1.AddItem b.Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 1) = b.Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 2) = b.Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 3) = b.Cells(i, 4)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 4) = b.Cells(i, 5)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 5) = b.Cells(i, 6)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 6) = b.Cells(i, 7)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 7) = b.Cells(i, 8)
End If
Next i
Me.ListBox1.ColumnWidths = «20 pt;90pt;80 pt;80 pt»
End If
End Sub

Private Sub UserForm_Initialize()
Dim fila As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set b = Sheets(«Hoja1»)
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
uc = b.Cells(1, Columns.Count).End(xlToLeft).Address
wc = Mid(uc, InStr(uc, «$») + 1, InStr(2, uc, «$») – 2)
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = «20 pt;90pt;80 pt;80 pt»
‘.RowSource = «Hoja2!A2:» & wc & uf
End With

‘Adiciona un item al listbox reservado para la cabecera
UserForm1.ListBox1.AddItem

uf = b.Range(«A» & Rows.Count).End(xlUp).Row
For i = 2 To uf
Me.ListBox1.AddItem b.Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 1) = b.Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 2) = b.Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount – 1, 3) = b.Cells(i, 4)
Next i

‘Carga los datos de la cabecera en listbox
For ii = 0 To 7
UserForm1.ListBox1.List(0, ii) = Sheets(«Hoja1»).Cells(1, ii + 1)
Next ii

For j = 0 To Me.ListBox1.ListCount – 1
If Me.ListBox1.Selected(j) = True Then Me.ListBox1.Selected(j) = False
Next j

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

Summary
❤️ Como ELIMINAR  ⚡️ VARIOS ITEM de  ? Listbox MULTISELECT  de una Sola Vez en EXCEL VBA
Article Name
❤️ Como ELIMINAR ⚡️ VARIOS ITEM de ? Listbox MULTISELECT de una Sola Vez en EXCEL VBA
Description
QUITAR Varios REGISTROS de LISTBOX MULTISELECT de una sola vez 1) Selecciona los registros a Eliminar 2) Presiona el botón eliminar registro 3) Mira el código como se hace y adapta a tus necesidades
macrosenexcel.com