Если вы используете значения даты в своих ячейках, например, результат = TODAY (), вы можете использовать Range.Autofilter
с CDbl
сравнениями.
К CDate
вы можете убедиться, что ваши переменные«datestart» и «datefinish» также являются значениями даты.
CDbl
работает почти идеально, так как значение даты внутренне состоит из целой части (дни с 1900 года) и ее десятичных дробей (часть дня, т.е.часы, минуты, секунды).
With Worksheets("Data").Range("C:C")
.AutoFilter field:=1, _
Operator:=xlAnd, _
Criteria1:=">=" & CDbl(CDate(datestart)), _
Criteria2:="<=" & CDbl(CDate(datefinish))
End With
Имейте в виду, что критерии <, <=,>,> =, <> будут работать, как указано выше, но если даты должны быть отфильтрованы равными для данной даты, простое "= ..." требует либо точного строкового обозначения дат на вашем рабочем листе (в зависимости от числового формата ячеек), либо следующего, независимо от формата даты:
With Worksheets("Data").Range("C:C")
.AutoFilter field:=1, _
Criteria1:="<=" & CDbl(myDate), Operator:=xlAnd, _
Criteria2:=">=" & CDbl(myDate)