Filtrar por fecha y mostrar en listbox de excel

Tengo un formulario con un listbox, un botón y dos textbox.

Tengo en una hoja un rango de datos "x", entre ellos una columna que muestra la fecha para cada fila.

Necesito ingresar en los textbox un rango de fechas, presionar el botón, y que en el listbox me muestre el rango de fechas que estoy "filtrando".

Pero hay un punto importante: los datos en la hoja se van almacenado del más nuevo al más viejo, esto es, las filas van de la fecha más reciente a la más vieja (ej: a1=5/12/13, a2=4/12/13, a3=3/12/13, etc.).

En las pruebas tengo tres fechas: 28/11/2013, 29/11/2013 y 05/12/2013.

Estoy tratando con este código, pero no funciona bien, ya que sí parece trabajar para las dos primeras fechas, pero no sé porqué no me funciona para la última fecha (no sé si será asunto de formato de las celdas).

Private Sub CommandButton3_Click()

Dim lFecha1 As Date, lFecha2 As Date
lFecha1 = ActiveSheet.Range("fecha1")
lFecha2 = ActiveSheet.Range("fecha2")
TextBox1 = lFecha1
TextBox2 = lFecha2
Sheets("Hoja3").Cells.Clear
u = Range("AA" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("aa1:ao" & u).AutoFilter Field:=9, Criteria1:=">=" & lFecha1, _
Operator:=xlAnd, Criteria2:="<=" & lFecha2
Range("aa1:ao" & u).Copy Sheets("Hoja3").Range("A1")
u = Sheets("Hoja3").Range("A" & Rows.Count).End(xlUp).Row
Me.ListBox2.List = Sheets("Hoja3").Range("A2:O" & u).Value
Selection.AutoFilter

End Sub

Agradezco su ayuda, que son las mejores de la red.

Respuesta
4

Para poder filtrar un intervalo de fechas mediante VBA necesitas reconvertir las fechas al formato: mm/dd/yyyy

Por ejemplo, una vez tengamos la variable de Ifecha1 y Ifecha2 haríamos lo siguiente:

Ifecha1 = format(Ifecha1,"mm/dd/yyyy")

Ifecha2 = format(Ifecha2,"mm/dd/yyyy")

Después ya vendría la fila del autofilter...

No me funciona amigo, parece que le cambia el formato a las celdas al de hora y convierte lo que hay en ellas y en los textbox en 00:00:00.

Te mando el siguiente ejemplo:

-Tenemos una tabla de 4 columnas y en la columna 3 están las fechas.

-En nuestro formulario tenemos un listbox, 2 textbox y un botón.

-En el textbox1 anotaremos la fecha de inicio y en el textbox2 anotaremos la fecha fin que queremos filtrar.

-Después solo tenemos que pulsar el botón que tendrá esta macro asociada.

Private Sub CommandButton1_Click()
fecha1 = CDate(TextBox1)
fecha2 = CDate(TextBox2)
fecha1 = Format(fecha1, "mm/dd/yyyy")
fecha2 = Format(fecha2, "mm/dd/yyyy")
Range("a1").AutoFilter field:=3, Criteria1:=">=" & fecha1, Operator:=xlAnd, Criteria2:="<=" & fecha2
For Each celda In Range("a2:a" & Range("a65000").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
ListBox1.AddItem celda
i = ListBox1.ListCount - 1
ListBox1.List(i, 1) = celda.Offset(0, 1)
ListBox1.List(i, 2) = celda.Offset(0, 2)
ListBox1.List(i, 3) = celda.Offset(0, 3)
Next
End Sub

recuerda finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas