none
´Dúvida no filtro RRS feed

  • Pergunta

  • Pessoal, tenho a macro:
    Sub Filtro()

    Dim dt As Long
        On Error Resume Next
        ActiveSheet.ShowAllData
        On Error GoTo 0
        dt = Now()
        ActiveSheet.Range("$A$1:$D$18").AutoFilter Field:=2, Criteria1:=">=" & dt - 1, Operator:=xlAnd, Criteria2:="<" & dt

    End Sub

    Essa macro seleciona o filtro para o dia que eu quero (no código está como ontem).Assim são selecionadas todas as linhas que tem a data do dia de ontem(coluna B).Porém, se o dia de ontem for um domingo, eu gostaria que fosse para sexta-feira.Como eu faço isso?

    Att

    terça-feira, 29 de maio de 2012 19:48

Respostas

  • Agora que vi que você usa dt mais de uma vez no seu filtro. Por que não usa a data somente uma vez como critério no filtro?

    Sub Filtro()
        Dim dt As Long
        On Error Resume Next
        ActiveSheet.ShowAllData
        On Error GoTo 0
        
        dt = Now()
        If Weekday(dt - 1) = 1 Then dt = dt - 3
        
        ActiveSheet.Range("$A$1:$D$18").AutoFilter Field:=2, Criteria1:="=" & dt
    
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    domingo, 3 de junho de 2012 12:25
    Moderador

Todas as Respostas

  • Troque

    Adicione após a linha:

    dt = Now

    O código:

    If Weekday(dt - 1) = 1 Then dt = dt - 3


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quarta-feira, 30 de maio de 2012 00:47
    Moderador
  • Cara , desculpe minha ignorancia, mas vai ficar assim?
    Sub Filtro()

    Dim dt As Long
        On Error Resume Next
        ActiveSheet.ShowAllData
        On Error GoTo 0
        dt = Now()

        If Weekday(dt - 1) = 1 Then dt = dt - 3 Else dt = Now()

        ActiveSheet.Range("$A$1:$D$18").AutoFilter Field:=2, Criteria1:=">=" & dt - 1, Operator:=xlAnd, Criteria2:="<" & dt

    End Sub

    Se eu faço assim não dá certo.Ele sempre considera dt = -3.

    quarta-feira, 30 de maio de 2012 11:23
  • Agora que vi que você usa dt mais de uma vez no seu filtro. Por que não usa a data somente uma vez como critério no filtro?

    Sub Filtro()
        Dim dt As Long
        On Error Resume Next
        ActiveSheet.ShowAllData
        On Error GoTo 0
        
        dt = Now()
        If Weekday(dt - 1) = 1 Then dt = dt - 3
        
        ActiveSheet.Range("$A$1:$D$18").AutoFilter Field:=2, Criteria1:="=" & dt
    
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    domingo, 3 de junho de 2012 12:25
    Moderador