Autofiltro en una Tabla de Excel con fechas como criterio

Tengo una tabla en Excel que tiene varios campos y uno de ellos es del tipo fecha

Aquí les adjunto una porción de la tabla.

Necesito hacer un filtrado de los datos de la tabla por el rango de fechas, para lo cual tengo el siguiente código:

Dim HojaDatos As Worksheet
Dim HojaListado As Worksheet
Dim TablaDatos As ListObject

Dim CritDdeStr As String
Dim CritHstStr As String

Set HojaDatos = ThisWorkbook.Sheets(Hoja4.Name)
Set HojaListado = ThisWorkbook.Sheets(Hoja5.Name)
Set TablaDatos = HojaDatos.ListObjects("TablaDesvios")

' datos que se ingresan manualmente

CritDdeStr = ">=" & HojaListado.Range("M2").Value
CritHstStr = "<=" & HojaListado.Range("M4").Value

y esta es la instrucción que utilizo para el autofilter:

TablaDatos.Range.AutoFilter Field:=Campo, Criteria1:=CritSdeStr, Operator:=xlAnd, Criteria2:=CritHstStr

Pues bien, no encuenta ningún dato y no se donde esta el error..

¿Pueden ayudarme?

Millón de gracias por adelantado

1 respuesta

Respuesta
1

Leyendo tu código se observan 2 errores:

Field:= Campo   pero Campo no aparece en las instrucciones. Según tu imagen debiera ser:

Field:= 3 

O anteponer una instrucción que diga cuál es la columna. Por ejemplo: Campo = 3  

CritDdeStr este es el primer criterio, pero en la instrucción de filtro lo tenés como : CritSdeStr

Y en cuanto a los criterios, debieras probarlos de este modo:

CritDdeStr = ">=" & Format(HojaListado.Range("M2").Value, "mm/dd/yyyy")
CritHstStr = "<=" & Format(HojaListado.Range("M4").Value, "mm/dd/yyyy")

¡Gracias! 

Elsa, tu observación del formato ha sido genial.

Ahora, con tu permiso, quisiera aprovecharme de tus conocimientos y preguntarte porque se debe cambiar el formato ?

Elsa, puedes ayudarme para saber cuantas Filas de la tabla han sido seleccionadas ?

No encuentro una propiedad que lo permita hacer. Mejor dicho... no se si lo hay !!

Gracias miles 

Qué pena la demora, pero el foro ya no envía todas las notificaciones ... es algo aleatorio ;)

Te dejo 2 opciones, ya sea que quieras mencionar el rango o la tabla:

Sub cuentaFiltrados()
'x Elsamatilde
Set Hojax = ActiveSheet
Set tablax = Hojax.ListObjects(1)
x = Range(tablax).Rows.Count    'total de filas de la tabla
MsgBox x
canti = Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Count - 1
MsgBox canti
cuenta = Range(tablax).Columns(1).SpecialCells(xlCellTypeVisible).Count
MsgBox cuenta
End Sub

En mi ejemplo, donde se trata de una Tabla, las 2 variables (canti y cuenta) dan el mismo resultado. De paso te dejé la instrucción que suma el total de filas de la tabla.

* El nuevo manual 500Macros+365 presenta un capítulo completo dedicado a macros para trabajar con Tablas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas