Bom dia!!
Considerando que os dados de horas na coluna D estão com formatos corretos e as células F5 e G5 também (para que o filtro possa entender isso...).
Use uma condição de estrutura IF.
Tente algo assim:
Sub teste()
'Fitra baseado em criétio
Dim LastRow As Long
Dim strStart As String, strEnd As String
LastRow = Range("A" & Rows.Count).End(xlUp).Row
strStart = Range("F5").Value
strEnd = Range("G5").Value
If Range("F5").Value = "" Or Range("G5").Value = "" Then
With ActiveSheet
.Range("A7:H" & LastRow).AutoFilter Field:=2, Criteria1:=IIf(Trim(.Range("E2").Text) = "", "<>", "=") & .Range("E2").Text
.Range("A7:H" & LastRow).AutoFilter Field:=5, Criteria1:=IIf(Trim(.Range("E3").Text) = "", "<>", "=") & .Range("E3").Text
.Range("A7:H" & LastRow).AutoFilter Field:=8, Criteria1:=IIf(Trim(.Range("E4").Text) = "", "<>", "=") & .Range("E4").Text
.Range("A7:H" & LastRow).AutoFilter Field:=4, Criteria1:=IIf(Trim(.Range("F5").Text) = "", "<>", "=") & .Range("F5").Text
End With
Else
With ActiveSheet
.Range("A7:H" & LastRow).AutoFilter Field:=2, Criteria1:=IIf(Trim(.Range("E2").Text) = "", "<>", "=") & .Range("E2").Text
.Range("A7:H" & LastRow).AutoFilter Field:=5, Criteria1:=IIf(Trim(.Range("E3").Text) = "", "<>", "=") & .Range("E3").Text
.Range("A7:H" & LastRow).AutoFilter Field:=8, Criteria1:=IIf(Trim(.Range("E4").Text) = "", "<>", "=") & .Range("E4").Text
.Range("A7:H" & LastRow).AutoFilter Field:=4, Criteria1:=IIf(Trim(.Range("F5").Text) = "", "<>", "=") & .Range("F5").Text
.Range("A7:H" & LastRow).AutoFilter Field:=4, Criteria1:=">=" & strStart, Operator:=xlAnd, Criteria2:="<=" & strEnd
End With
End If
End Sub
Eu espero que eu tenha entendi.
Att
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 27/11/2017 7:30 am