如果我要按excel中的表单控件按钮,是否有一个快速宏可以为我自动设置数据透视表中的过滤器?我对vba和宏没有任何经验,我尝试录制一个,但当其中一个枢轴没有设置为我记录宏时最初设置的相同过滤器时,它会出错。
以下是代码:
Sub Filter_Foot()
'
' Filter_Foot Macro
'
Application.ScreenUpdating = False
ActiveSheet.PivotTables("PivotTable3").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable3").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable2").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable2").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable4").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable4").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable1").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable1").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable5").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable5").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable6").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable6").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable7").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable7").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable8").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable8").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable9").PivotFields("MD").CurrentPage = "(All)"
With ActiveSheet.PivotTables("PivotTable9").PivotFields("MD")
.PivotItems("Name 1").Visible = False
.PivotItems("Name 2").Visible = False
.PivotItems("Name 3").Visible = False
.PivotItems("Name 4").Visible = False
.PivotItems("Name 5").Visible = False
.PivotItems("Name 6").Visible = False
.PivotItems("Name 7").Visible = False
.PivotItems("Name 8").Visible = False
.PivotItems("Name 9").Visible = False
.PivotItems("Name 10").Visible = False
.PivotItems("Name 11").Visible = False
.PivotItems("Name 12").Visible = False
.PivotItems("Name 13").Visible = False
.PivotItems("Name 14").Visible = False
.PivotItems("Name 15").Visible = False
.PivotItems("Name 16").Visible = False
.PivotItems("Name 17").Visible = False
.PivotItems("Name 18").Visible = False
.PivotItems("Name 19").Visible = False
.PivotItems("Name 20").Visible = False
.PivotItems("Name 21").Visible = False
.PivotItems("(blank)").Visible = False
End With
End Sub
答案 0 :(得分:1)
这是很多代码。重构可能会更容易发现问题:
Sub Filter_Foot()
Dim pt As PivotTables
Set pt = ActiveSheet.PivotTables
Application.ScreenUpdating = False
SetPF pt("PivotTable3").PivotFields("MD")
SetPF pt("PivotTable2").PivotFields("MD")
SetPF pt("PivotTable4").PivotFields("MD")
SetPF pt("PivotTable1").PivotFields("MD")
SetPF pt("PivotTable5").PivotFields("MD")
SetPF pt("PivotTable6").PivotFields("MD")
SetPF pt("PivotTable7").PivotFields("MD")
SetPF pt("PivotTable8").PivotFields("MD")
SetPF pt("PivotTable9").PivotFields("MD")
Application.ScreenUpdating = True
End Sub
Sub SetPF(pf As PivotField)
Dim i As Integer
With pf
.CurrentPage = "(All)"
For i = 1 To 21
.PivotItems("Name " & i).Visible = False
Next i
.PivotItems("(blank)").Visible = False
End With
End Sub