Filtrar datos dentro de un listview

Mi pregunta es si me pudieran ayudar a filtrar la informacion que tengo en un listview, esta información es la lista de archivos de un carpeta y si pongo algún dato en un textbox se filtre en el listview, siempre y cuando existan datos coincidentes.

1 Respuesta

Respuesta
3

El listbox se llena con una tabla (x código o desde sus propiedades)

Entonces, lo que tenés que hacer en este caso, es llenarlo por código (*) y dejar su propiedad RowSource vacía.

Luego, al momento de filtrar, se filtra la tabla de origen... y se vuelve a cargar el listbox la tabla filtrada, que podés tenerla en un rango auxiliar. Previamente se lo limpia para que no agregue datos a continuación.

(*) Por ej:

ListBox1.clear

For Each celdita In ActiveSheet.Range("F5:F60")
ListBox1.AddItem celdita
Next

Hola Elsa, gracias por responder. mira lo que pasa que tengo una macro dentro de una hoja de excel. abro un formulario que contiene un listview no listbox, en el me aparecen los nombre de los archivos de una carpeta en donde tengo guardado el archivo de excel.

tengo un textbox, como para buscar "coincidencias" y lo que ponga en el textbox, me lo filtre en el listview.

los nombres de los archivos aparecen directamente en en listview sin pasar a excel, por eso no se como filtrarlos dentro del listview

agrego código que tengo al ejecutar formulario

RUTA = ThisWorkbook.Path & "\" ' RUTA DONDE BUSCA LOS ARCHIVOS PARA EL LISTADO
listview1.ListItems.Clear
fName = Dir(RUTA)
Do While Len(fName) > 0
If fName Like "*" & ".*" Then Set SUBELEMENTO = listview1.ListItems.Add(, , fName)
fName = Dir
Loop

con este código se me llena de listview con los nombre de los archivos que tengo en una carpeta. lo que quiero es que esta lista la pueda filtrar poniendo en un textbox el nombre del archivo a filtrar.

Espero que me puedas a ayudar o si me pudierar siguerir algo.

de ante mano muchas gracias!!!

Jose

El control no tiene opción de filtrado, así que hay que buscar otra alternativa...

- Volcar los datos a la hoja y luego de filtrarla volver a llenar el listview

- O eliminar los items del control, que responden al criterio.

Como me parece que esto puede llegar a ser lo más práctico para no afectar a las hojas, te dejo una macro de ejemplo:

Private Sub CommandButton1_Click()
'x Elsamatilde
'se recorren los elementos del listview comparando su texto con el TextBox1
x = ListView1.ListItems.Count
On Error GoTo salgo
For i = 1 To x
'si el item 'NO contiene' lo del textbox, se elimina
If InStr(1, ListView1.ListItems.Item(i).Text, TextBox1) = 0 Then
ListView1.ListItems.Remove i
'se resta 1 a la cantidad de elementos y al índice del control
i = i - 1
x = x - 1
End If
Next i
salgo:
End Sub

Por supuesto que luego de tu acción, si nuevamente necesitas la lista completa tendrás que volverla a llenar con la rutina que ya tenías.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas