Фильтру даты для сводного поля требуется два String
, которые Excel может интерпретировать как значения даты (ни Date
значения, ни Range
объекты не могут быть назначены непосредственно в моей немецкой версии Excel!).
Поэтому я использую две переменные даты "o2" и "o3", которые
- прочитано с
Range.Value
- конвертируется в даты на
CDate
(необязательно, если вы уже использовали значения даты в своих ячейках)
- преобразовано в строки по
CStr
Sub MyFilter()
Dim pvtfld As PivotField
Dim pvtfil As PivotFilter
Dim o2 As Date
Dim o3 As Date
With ThisWorkbook.Sheets("Sheet1")
Set pvtfld = .PivotTables("PivotTable1").PivotFields("Date")
o2 = CDate(.Range("O2").Value) ' just to ensure, they are dates
o3 = CDate(.Range("O3").Value)
Debug.Print CStr(o2), CStr(o3)
pvtfld.ClearAllFilters
Set pvtfil = pvtfld.PivotFilters.Add2(Type:=xlDateBetween, Value1:=CStr(o2), Value2:=CStr(o3), Order:=xlDescending)
End With
End Sub