Listbox con items filtrados por función de búsqueda y por control de fechas

Expertos buenos días tengo un formulario sencillo (solo tiene un listbox) ese listbox al abrir el form carga los datos de varias filas si en la columna A existe una "C", pero de esas filas solo muestras las que en la columna "I" tengan una fecha mayor o igual a DATE. El problema que tengo es que no me esta filtrando por fecha, (muestra filas aunque la fecha sea menor a hoy). Por favor corrijan cual sea mi error. Aquí mi código:

Private Sub UserForm_Initialize()
ThisWorkbook.Sheets("LOGISTICA2").Select
ListBox1.Clear
Set BUSCA = Sheets("LOGISTICA2").Range("A:A").Find("C", LookIn:=xlValues, lookat:=xlPart)
If Not BUSCA Is Nothing Then
    ubica1 = BUSCA.Address
    Do
        fila = BUSCA.Row
        If Range("I" & fila) = Date Or Range("I" & fila) > Date Then
        ListBox1. AddItem
        ListBox1.List(X, 0) = Hoja12. Cells(fila, 10).Value
        ListBox1.List(X, 1) = Hoja12. Cells(fila, 11).Value
        ListBox1.List(X, 2) = Hoja12. Cells(fila, 3).Value
        ListBox1.List(X, 3) = Hoja12. Cells(fila, 8).Value
        ListBox1.List(X, 4) = Hoja12. Cells(fila, 6).Value
        ListBox1.List(X, 5) = Hoja12. Cells(fila, 9).Value
        ListBox1.List(X, 6) = Hoja12. Cells(fila, 2).Value
        X = X + 1
        End If
        Set BUSCA = Sheets("LOGISTICA2").Range("A:A").FindNext(BUSCA)
    Loop While Not BUSCA Is Nothing And BUSCA.Address <> ubica1
Else
   ListBox1.Clear
End If
End Sub
Respuesta
1

:)

Busca en la ayuda del VBA, que significa:

lookat:=xlPart

para el método Find.

¿Te orientas?...

nopp

explícame por favor.

.

XlPart implica que si tienes en la columna A: peca... ¡También te procesa esa línea!

¿Es ése el caso? (Recuerda que te estoy intentando ayudar sin ver tu archivo).

.

1 respuesta más de otro experto

Respuesta
1

Supongo que la hoja "LOGISTICA2" y Hoja12 son la misma hoja.

Si ya seleccionaste la hoja al inicio del código, ya no es necesario que la pongas en las líneas.

Lo que está sucediendo, es que en la columna "I" tienes datos que no son una fecha, para ello, podemos validar que sea una fecha, las que no sean fechas no serán incluidas en el filtro.

Prueba con el siguiente código:

Private Sub UserForm_Initialize()
    ThisWorkbook.Sheets("LOGISTICA2").Select
    ListBox1.Clear
    Set BUSCA = Range("A:A").Find("C", LookIn:=xlValues, lookat:=xlPart)
    If Not BUSCA Is Nothing Then
        ubica1 = BUSCA.Address
        Do
            fila = BUSCA.Row
            If IsDate(Range("I" & fila)) Then
                If Range("I" & fila) >= Date Then
                    ListBox1.AddItem
                    ListBox1.List(X, 0) = Cells(fila, 10).Value
                    ListBox1.List(X, 1) = Cells(fila, 11).Value
                    ListBox1.List(X, 2) = Cells(fila, 3).Value
                    ListBox1.List(X, 3) = Cells(fila, 8).Value
                    ListBox1.List(X, 4) = Cells(fila, 6).Value
                    ListBox1.List(X, 5) = Cells(fila, 9).Value
                    ListBox1.List(X, 6) = Cells(fila, 2).Value
                    X = X + 1
                End If
            End If
            Set BUSCA = Range("A:A").FindNext(BUSCA)
        Loop While Not BUSCA Is Nothing And BUSCA.Address <> ubica1
    End If
End Sub


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

sigue igual =(

si la hoja12 es la misma, el único dato que no es fecha en esa columna es el encabezado.

Revisa que las fechas sean tipo fecha, puede ser que las tengas como texto.

Pon una imagen de tu hoja para ver tus datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas