如何一次更改和打印单个数据透视表的多个过滤器?

时间:2016-07-12 11:21:18

标签: excel excel-vba vba

概述:

我有一个带过滤器的pivottable。过滤器包含1到30的列表,每个列表必须单独打印。也就是说,每次我必须更改过滤器并打印过滤结果。

我的要求:

我想要的是立刻打印所有这些。

条件:

数字列表不是连续的或静态的。这意味着某些数字会下降,之后可能会添加一些新数字。

我的现状和挑战:

通过宏录制器命令,我可以达到以下情况。但问题是,我不知道如何让它变得动态。我的意思是,如何说“为现有数字做程序”。

有人可以帮助我纠正并完成以下宏吗?

Sub Makro1()
'
' Makro1 Makro
'     
    ActiveSheet.PivotTables("Leistungsnachweise").PivotFields("Tour").CurrentPage _ = "1"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False
    ActiveSheet.PivotTables("Leistungsnachweise").PivotFields("Tour").CurrentPage _ = "2"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False

End Sub

谢谢,
DIO

1 个答案:

答案 0 :(得分:0)

有人在以下链接中给了我一个明确的答案。我发现它很有用,所以我与你分享。

You can find it in the Ozgrid Forum

以下是答案的副本:

Sub LoopField() 
Dim pivF As PivotField 
Dim pivI As PivotItem 

Set pivF = ActiveSheet.PivotTables("Leistungsnachweise").PivotFields("Tour")  
Application.ScreenUpdating = False 
For Each pivI In pivF.PivotItems 
    pivF.CurrentPage = pivI.Name 

    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False 
Next pivI 
 'Clear filer
pivF.ClearAllFilters 

Application.ScreenUpdating = True 
End Sub