Notifications
Clear all

Filtro por Data no VBA

7 Posts
2 Usuários
0 Reactions
1,821 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom Dia Caros Colegas do Forum

Estou precisando a ajuda de vocês referente filtro em excel com programação em vba.

Anexo estou colocando o modelo que eu fiz, mas eu não sei o que eu fiz de errado pois não esta rodando :/.

Preciso que o filtro ocorra de acordo com o intervalo das datas que eu colocar, caso eu deixe em branco ele limpar o filtro.

Agradeço se alguém puder me ajudar.

Att. Dias

 
Postado : 13/03/2013 8:13 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Altere a rotina conforme abaixo e veja se atende

Sub Filtro_Clique()
Dim DataInicial As String, DataFinal As String
Dim lastRow As Integer
lastRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row
DataInicial = VBA.Format(Sheets("Registro de Folow").Range("d3").Value, "mm/dd/yyyy")
DataFinal = VBA.Format(Sheets("Registro de Folow").Range("d5").Value, "mm/dd/yyyy")

ActiveSheet.Range("$B$7:$J$" & lastRow).Select
Selection.AutoFilter Field:=3, Criteria1:=">=" & DataInicial, Operator:=xlAnd, _
    Criteria2:="<=" & DataFinal
End Sub
 
Postado : 13/03/2013 9:15 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

dias2011,

Boa Tarde!

Vejo o arquivo anexo.

 
Postado : 13/03/2013 9:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa Tarde Wagner Morel e Reinaldo

Nossa muito obrigada, é isso mesmo que eu preciso, apenas gostaria de pedir uma coisa, não abusando.

Tem como fazer a macro rodar se eu apenas colocar a;
- data inicial (puxa os filtros a partir daquela data?) e também se eu colocar apenas a;
- data final (ele so puxa os filtros até aquela data?)

E também se os campos estiverem em branco ele não puxar filtro algum, eu tentei aqui deu certo mas se eu clicar mais de uma vez na caixa sem ter nenhum dado ele dá erro.

Obrigada mesmo pelo retorno.

Att.Dias

 
Postado : 13/03/2013 9:57 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Experimente assim:

Sub Filtro_Clique()
Dim DataInicial As String, DataFinal As String
Dim lastRow As Integer
lastRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row
DataInicial = VBA.Format(Sheets("Registro de Folow").Range("d3").Value, "mm/dd/yyyy")
DataFinal = VBA.Format(Sheets("Registro de Folow").Range("d5").Value, "mm/dd/yyyy")
'Se tiver data inicio e tem data fim
If DataInicial <> "" And DataFinal <> "" Then
    ActiveSheet.Range("$B$7:$J$" & lastRow).Select
    Selection.AutoFilter Field:=3, Criteria1:=">=" & DataInicial, Operator:=xlAnd, _
                                   Criteria2:="<=" & DataFinal
'Se tiver data inicio e mas sem data fim
ElseIf DataInicial <> "" And DataFinal = "" Then
    ActiveSheet.Range("$B$7:$J$" & lastRow).Select
    Selection.AutoFilter Field:=3, Criteria1:=">=" & DataInicial
'Se não tiver data inicio mas tem data fim
ElseIf DataInicial = "" And DataFinal <> "" Then
    ActiveSheet.Range("$B$7:$J$" & lastRow).Select
    Selection.AutoFilter Field:=3, Criteria1:="<=" & DataFinal
Else
'Se não tiver data inicio e tambem não tem data fim
        ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=3
End If
End Sub
 
Postado : 13/03/2013 11:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Puxa Reinaldo, Valeu mesmo.

Esta otimo muito Obrigada.

Tenha um otimo restinho de semana.

Abraços
Dias

 
Postado : 13/03/2013 12:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Colegas não abusando da boa vontade de vocês,

Quero saber se tem como ao eu iniciar o excel ele filtre todos os dados que estão com a data de ontem, copie e cole numa 2° planilha, teria como???

Seria para esta propria planilha que estamos desenvolvendo juntos.

Att Dias

 
Postado : 21/03/2013 12:26 pm