Если PivotField "WK" является полем Row
или Column
, то цикл не требуется;Вы можете просто применить фильтр к PivotField.Это также хорошая идея, чтобы квалифицировать ссылки на диапазон с помощью рабочего листа.
Sub foo()
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.PivotTables("PivotTable1").PivotFields("WK")
.ClearAllFilters
.PivotFilters.Add2 _
Type:=xlCaptionIsBetween, _
Value1:=ws.Range("J1").Value, _
Value2:=ws.Range("K1").Value
End With
End Sub
Если PivotField "WK" является полем Page
, то вам нужно выполнить цикл - но вы путаете ваши типы данных,и вы применили оператор И, где вы имеете в виду ИЛИ.Вы можете попробовать это:
Sub FilterPageField()
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim lPi As Long
Dim lStart As Long
Dim lEnd As Long
lStart = CLng(ActiveSheet.Range("J1").Value)
lEnd = CLng(ActiveSheet.Range("K1").Value)
Set pt = Sheet1.PivotTables("PivotTable1")
Set pf = pt.PivotFields("WK")
pf.ClearAllFilters
For Each pi In pf.PivotItems
lPi = CLng(pi.Caption)
pi.Visible = lPi >= lStart And lPi <= lEnd
Next pi
End Sub