2012-08-03 55 views
0

有透视表,如果我按在Excel表单控件按钮,可以自动设置的过滤器对我来说是快速宏自动设置过滤器?我没有任何关于vba和宏的经验,我尝试录制一个,但是当其中一个枢轴没有设置为与最初设置为记录宏时相同的滤镜时,它会出错。在Excel中使用按钮在数据透视表

下面是它的代码:

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

我认为录制宏将是最好的选择。我认为录制宏的代码不会使用较慢的命令 - 所以可能有其他一些原因让它变慢。 – Stepan1010 2012-08-03 19:36:24

+1

尝试关闭屏幕更新,然后在更改8个支点后将其重新设置... – 2012-08-03 19:55:29

+0

设置Application.ScreenUpdating最有可能帮助很多(对于您来说足够了)!但是,如果它仍然太慢,那么记录的宏可能会运行一些效率低下的代码。如果您想使用您的代码编辑帖子,我们可能会稍微编辑它以提供帮助。 – 2012-08-03 20:08:23

回答

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