Modificar código de un macro para que filtre fechas de acuerdo a información dada en un cuadro emergente

Tengo este código:

Sub Anual()
    dia = InputBox("Introduce el número de día actual:")
    mes = InputBox("Introduce el número de mes actual:")
    año = InputBox("Introduce el número de año actual:")
    If dia = "" Then Exit Sub
    If mes = "" Then Exit Sub
    If año = "" Then Exit Sub
    año1 = año - 1
    fecha = dia & "/" & mes & "/" & año
    f1 = DateSerial(Val(año1), Val(mes), Val(dia))
    Sheets("Concentrado general").Select
    Selection.AutoFilter Field:=3
    Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("J2").FormulaR1C1 = "12/2/2005"
    Range("A2").FormulaR1C1 = "2"
    Selection.AutoFilter Field:=10, Criteria1:= _
        "<" & f1, Operator:=xlAnd
End Sub

Con esto busco que el macro filtre todas las fechas anteriores a 1 año a partir de la fecha actual. Por ejemplo: si hoy es 15/12/2014, el macro debe filtrar las fechas anteriores al 15/12/2013.

El problema es que no hace lo que deseo y me gustaría saber como modificarlo o si hay otra forma de que lo haga.

Saludos y gracias de antemano

1 respuesta

Respuesta
1

Si quieres las fechas anteriores a 1 año a partir de la fecha actual:

Sub Anual()
'Por.Dante Amor
    Sheets("Concentrado general").Select
    rango = "A1:J10"
    fecha = DateSerial(Year(Date) - 1, Month(Date), Day(Date))
    ActiveSheet.AutoFilterMode = False
    ActiveSheet.Range(rango).AutoFilter Field:=10, _
        Criteria1:="<" & Format(fecha, "mm/dd/yyyy"), Operator:=xlAnd
End Sub

Pero si quieres capturar una fecha, puedes ser así:

Sub Anual2()
'Por.Dante Amor
    Sheets("Concentrado general").Select
    dia = InputBox("Introduce el número de día actual:")
    mes = InputBox("Introduce el número de mes actual:")
    año = InputBox("Introduce el número de año actual:")
    '
    rango = "A1:J10"
    fecha = DateSerial(año - 1, mes, dia)
    ActiveSheet.AutoFilterMode = False
    ActiveSheet.Range(rango).AutoFilter Field:=10, _
        Criteria1:="<" & Format(fecha, "mm/dd/yyyy"), Operator:=xlAnd
End Sub

Cambia en la macro rango = "A1:J10", por el rango en donde se encuentran los datos que quieres filtrar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas