Macro para filtrar que no filtra

Tengo datos en un rango de celdas de la hoja1 con encabezado, y tengo una macro para que filtre por fecha, tomando la fecha de la celda F1

Pero una vez ejecuto la macro no me muestra el resultado esperado.

¿Alguien me puede decir que tengo mal en el código? Porque el filtro se ve que lo hace, pero no muestra la fila.

Sub Filtrar()
 Set h = Sheets("Hoja1")
     fecha = CDate(h.[F1])
 With h.Range("A:D")
   Set b = .Find(fecha)
   If Not b Is Nothing Then
      Columns("A:D").Select
      Selection.AutoFilter Field:=2, Operator:= _
      xlFilterValues, Criteria2:=fecha
  End If
End With
End Sub

1 respuesta

Respuesta
2

Prueba lo siguiente:

Sub Filtrar()
  Dim h As Worksheet
  Dim b As Range
  Dim fecha As Date
  '
  Set h = Sheets("Hoja1")
  If h.AutoFilterMode Then h.AutoFilterMode = False
  fecha = CDate(h.[F1])
  With h.Range("A:D")
    Set b = .Find(fecha, , xlValues, xlWhole)
    If Not b Is Nothing Then
       .AutoFilter 2, fecha, xlFilterValues
    End If
  End With
End Sub

Puse la fecha como criterio1 en el filtro.

Si tienes problemas, cambia a esta línea, porque puede ser que requiera filtrar la fecha, pero con el formato inglés:

fecha = Format(CDate(h.[F1]), "mm/dd/yyyy")

¡Gracias! Dante Amor por tu respuesta, pero sigue sin filtrar. Esto es muy raro, pero debe tener una explicación que intentaré averiguar. 

Prueba lo siguiente:

Cambié la declaración de fecha a Variant y puse el formato en "mm/dd/yyyy". Con los datos de muestra que pusiste hace el filtrado.

Sub Filtrar()
  Dim h As Worksheet
  Dim b As Range
  Dim fecha As Variant
  '
  Set h = Sheets("Hoja1")
  If h.AutoFilterMode Then h.AutoFilterMode = False
  fecha = Format(CDate(h.[F1]), "mm/dd/yyyy")
  With h.Range("A:D")
    Set b = .Find(fecha, , xlValues, xlWhole)
    If Not b Is Nothing Then
       .AutoFilter 2, fecha, xlFilterValues
    End If
  End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas