Mostrar solo las celdas visibles en el listbox 9 columnas

Tengo dos combobox en el primero busco los nombres en el segundo las marcas.

El tema es que cuando filtro el primer nombre seleccionado del combo1 me sale error, en cambio al seleccionar el segundo nombre del combo1 me muestra perfecto en el listbox.

1 respuesta

Respuesta
1

Puedes poner el código que estás utilizando y una imagen de cómo están tus datos en la hoja

¿Y el problema es el segundo combo o en el listbox?

Explica con ejemplos qué tienes y qué debe aparecer al seleccionar el primer nombre

Me podrías pasar tu correo y te mando el archivo

Antes de llegar la correo, puedes explicarlo aquí con imágenes. De igual forma si me envías el archivo necesito una explicación detallada, así que empecemos aquí con los ejemplos.

El problema es en el list

Este es el código del combo

Private Sub ComboBox4_Change()
Selection.AutoFilter Field:=3, Criteria1:=CStr("*" + ComboBox4.Text) + "*"
If ComboBox4.Text = "" Then
Selection.AutoFilter Field:=3
End If
ListBox1.Clear
Dim celda As Range
With ListBox1
For Each celda In Range("A2:A" & Range("C50").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
ListBox1.AddItem celda
O = ListBox1.ListCount - 1
ListBox1.List(O, 1) = celda.Offset(0, 1)
ListBox1.List(O, 2) = celda.Offset(0, 2)
ListBox1.List(O, 3) = celda.Offset(0, 3)
ListBox1.List(O, 4) = celda.Offset(0, 4)
ListBox1.List(O, 5) = celda.Offset(0, 5)
ListBox1.List(O, 6) = celda.Offset(0, 6)
ListBox1.List(O, 7) = celda.Offset(0, 7)
ListBox1.List(O, 8) = celda.Offset(0, 8)
ListBox1.List(O, 9) = celda.Offset(0, 9)

cuando elijo el primer dato del combo me sale el siguiente error

Se ha producido el error "1004" en tiempo de ejecución.

Pero al seleccionar desde el segundo dato se me refleja bien los datos filtrados

Listo, le puse 2 controles.

El primero, es para saber cuántas filas tiene la base antes de filtrar:

    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    u = Range("A" & Rows.Count).End(xlUp).Row

De esa forma se evitará el error cuando seleccionas el primer registro de tus datos, es decir, el que se encuentra en la fila 2 de tu hoja.


El segundo, es para verificar si existen datos con lo que seleccionaste en el combobox4:

    u1 = Range("A" & Rows.Count).End(xlUp).Row
    If u1 = 1 Then
        MsgBox "No existen datos datos con ese texto"
        Exit Sub
    End If

Si lo que seleccionaste o escribiste en el combobox4 no tiene una coincidencia, el autofiltro quedará solamente con la fila 1 de los encabezados, entonces si la última fila con datos es la 1 entonces no encontró coincidencias.


Te dejo la macro actualizada:

Private Sub ComboBox4_Change()
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    u = Range("A" & Rows.Count).End(xlUp).Row
    '
    Selection.AutoFilter Field:=3, Criteria1:=CStr("*" + ComboBox4.Text) + "*"
    If ComboBox4.Text = "" Then
        Selection.AutoFilter Field:=3
    End If
    ListBox1.Clear
    '
    u1 = Range("A" & Rows.Count).End(xlUp).Row
    If u1 = 1 Then
        MsgBox "No existen datos datos con ese texto"
        Exit Sub
    End If
    '
    Dim celda As Range
    With ListBox1
        For Each celda In Range("A2:A" & u).SpecialCells(xlCellTypeVisible)
            ListBox1.AddItem celda
            O = ListBox1.ListCount - 1
            ListBox1.List(O, 1) = celda.Offset(0, 1)
            ListBox1.List(O, 2) = celda.Offset(0, 2)
            ListBox1.List(O, 3) = celda.Offset(0, 3)
            ListBox1.List(O, 4) = celda.Offset(0, 4)
            ListBox1.List(O, 5) = celda.Offset(0, 5)
            ListBox1.List(O, 6) = celda.Offset(0, 6)
            ListBox1.List(O, 7) = celda.Offset(0, 7)
            ListBox1.List(O, 8) = celda.Offset(0, 8)
            ListBox1.List(O, 9) = celda.Offset(0, 9)
        Next
    End With
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 

Funciona bien.

Ahora el tema es que cuando yo elijo en el combo1(Perez) saldría algo así

Perez 123

Perez 456

Y al seleccionar en el combo2 123 tendría que quedar así

Perez 123

O sea no borrar la primera condición del primer filtado

Te lo agradecería

Saludos

Esto pusiste en tu pregunta original:

El tema es que cuando filtro el primer nombre seleccionado del combo1 me sale error

Lo que hice fue arreglar el problema.


Con gusto te ayudo con todas tus peticiones, valora esta respuesta y crea una nueva pregunta. En la nueva pregunta explicas con detalle, con ejemplos y con imágenes lo que tienes y lo que esperas como resultado. Procura que en las imágenes se vean las filas y las columnas de excel.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas