Saltar al contenido
yobani

FILTRADO CON COMBOBOX

Recommended Posts

Buena tardes, necesito su ayuda estoy haciendo una aplicación que me filtre la base de dato en un listbox, pero cuando lo ejecuto me da el mensaje de que no encontro los datos este es el codigo que estoy utilizando:

Private Sub TextBox21_Change()
On Error GoTo Errores
If Me.TextBox21.Value = "" Then Exit Sub
Me.Listbox1.Clear

Columna = Me.ComboBox2.ListIndex

j = 1
Filas = Range("A2").CurrentRegion.Rows.Count
For i = 2 To Filas
    If LCase(Cells(i, j).Offset(0, CInt(Columna)).Value) Like "*" & LCase(Me.TextBox21.Value) & "*" Then
        Me.Listbox1.AddItem Cells(i, j)
        Me.Listbox1.List(Me.Listbox1.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
        Me.Listbox1.List(Me.Listbox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
        Me.Listbox1.List(Me.Listbox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
    Else
    End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra el dato introducido.", vbExclamation, "EXCELeINFO"
End Sub

 

Private Sub UserForm_Initialize()

Worksheets("BASE").Activate

Listbox1.ColumnWidths = "40;300;70;600"

   Me.ComboBox2.List = Application.Transpose(ActiveCell.CurrentRegion.Resize(1).Value)
    Me.ComboBox2.ListStyle = fmListStyleOption

 'Limpiamos Listbox
 Listbox1.RowSource = Empty
Listbox1.RowSource = "BASE!A2:D1048000"
 ActiveWorkbook.Save
End Sub

  

Compartir este mensaje


Enlace a mensaje
Compartir con otras webs

Y subir un archivo de ejemplo @yobani , para poder ver los rangos, columnas y si los datos están bien ;)

De momento mira a cambiar:

Columna = Me.ComboBox2.ListIndex 

por

Columna = Me.ComboBox2.Value

Y de

CInt(Columna)).Value 

Eliminaría el cInt, para ir probando cosas

Compartir este mensaje


Enlace a mensaje
Compartir con otras webs
Hace 9 horas, yobani dijo:

estoy haciendo una aplicación que me filtre la base de dato en un listbox, pero cuando lo ejecuto me da el mensaje de que no encontro los datos este es el codigo que estoy utilizando

veo "ligeras" adaptaciones sobre el código original (?), por que no repasas el articulo original ?, y de paso descargas (de nuevo ?) el archivo de ejemplo y comparas con los cambios que le has hecho ?

Formulario para filtrar datos de una tabla en ListBox eligiendo la columna de búsqueda en un ComboBox en Excel

saludos,
hector.

Compartir este mensaje


Enlace a mensaje
Compartir con otras webs

.

Hola!

La línea que te genera el error es: Me.Listbox1.Clear.

Y ello es a consecuencia de la forma en la que cargas los datos iniciales de tu listbox. Me refiero a: Listbox1.RowSource = "BASE!A2:D1048000".

Lo mejor será, entonces, que reemplaces la línea anterior por esta otra:

Listbox1.List = Range("BASE!A2:D1048000").Value

¿Entendido?...

Compartir este mensaje


Enlace a mensaje
Compartir con otras webs
Hace 22 horas, Cacho R dijo:

Hola!

La línea que te genera el error es: Me.Listbox1.Clear.

Y ello es a consecuencia de la forma en la que cargas los datos iniciales de tu listbox. Me refiero a: Listbox1.RowSource = "BASE!A2:D1048000".

Lo mejor será, entonces, que reemplaces la línea anterior por esta otra:

Listbox1.List = Range("BASE!A2:D1048000").Value

¿Entendido?...

¿Ya probaste con esta sugerencia o ni la leíste?...

Compartir este mensaje


Enlace a mensaje
Compartir con otras webs
Hace 5 horas, yobani dijo:

si, pero no me funciono

Pues entonces, o no has entendido lo que te dijo @Cacho R , o no sé qué has hecho :huh:

Solo tienes que cambiar el código que él te dijo por

Me.Listbox1.RowSource = Empty

Por cierto, esta línea no te puede traer nada más que problemas

Me.ComboBox2.List = Application.Transpose(ActiveCell.CurrentRegion.Resize(1).Value)

O pones una línea para que al abrir el formulario la celda activa sea la que quieres, o te va a dar error si la celda seleccionada es cualquier otra, o cambias el código :unsure:

Me.ComboBox2.List = Application.Transpose(Range("A1:D1").Value)

 

Compartir este mensaje


Enlace a mensaje
Compartir con otras webs

Holas a todos, por favor díganme como poner que el filtrado sea mas rápido, funciona muy bien la solución que me dieron, pero dura mucho tiempo, el filtrado se ejecuta en un rango de A2;D20000

Compartir este mensaje


Enlace a mensaje
Compartir con otras webs

Pués deberías subir el archivo original para poder ver qué hacer para optimizar, pero de momento esta línea hace que te busque en TODAS las celdas en el rango A:D

Listbox1.RowSource = "BASE!A2:D1048000" 

Deberías buscar sólo en el contenido que tenga celdas
 

uf=Range("A" & rows.count).End(XlUp).Row
Listbox1.RowSource = "BASE!A2:D" & uf

Hacer esto en todas las líneas de relleno de combo/list donde las llenes de la misma manera

Compartir este mensaje


Enlace a mensaje
Compartir con otras webs

Crear una cuenta o conéctate para comentar

Necesitas ser usuario para poder dejar un comentario

Crear una cuenta

Registrarse para una nueva cuenta en nuestra comunidad. ¡Es fácil!

Registrar una nueva cuenta

Conectarse

¿Ya tienes una cuenta? Conéctate aquí.

Conéctate ahora


×