如果我编写VBA以自动滤波excel中的枢轴表,则似乎我必须指定每个记录以可见= true或cissible = false。没有办法只指定我要检查的内容吗?
例如:
With ActiveSheet.PivotTables("PivotTable1").PivotFields("COB_TITLE")
.PivotItems("CMD GRP").Visible = True
.PivotItems("G1").Visible = True
.PivotItems("G2").Visible = True
End With
而不是
With ActiveSheet.PivotTables("PivotTable1").PivotFields("COB_TITLE")
.PivotItems("CMD GRP").Visible = True
.PivotItems("G1").Visible = True
.PivotItems("G2").Visible = True
.PivotItems("G3/G5/G3 FIRES/REE/G7/HAST/G9").Visible = False
.PivotItems("G4").Visible = False
.PivotItems("G6").Visible = False
.PivotItems("G8").Visible = False
.PivotItems("DIV ENG").Visible = False
End With
我确定我一次录制了一个宏,只有我选择的。
- 续..
所以我写了这个字符串function VisibleList(strSLIDE)
,该字符串产生这样的列表:
.PivotItems("HHBN").Visible = False
.PivotItems("CMD GRP").Visible = False
.PivotItems("G1").Visible = True
.PivotItems("G2").Visible = True
.PivotItems("G3/G5/G3 FIRES/REE/G7/HAST/G9").Visible = True
.PivotItems("DIV ARTY").Visible = False
.PivotItems("G3 FIRES").Visible = False
.PivotItems("G4").Visible = True
我希望我能像这样嵌入它:
strPivotItems = VisibleList("DIV STAFF")
With ActiveSheet.PivotTables("PivotTable1").PivotFields("COB_TITLE")
strPivotItems
End With
我假设我可以像嵌入SQL一样这样做。有没有办法为VBA生成它?
不确定这是您的意思,而是在下方提供代码:
Option Explicit
Sub FilterPivotItems()
Dim PvtTbl As PivotTable
Dim PvtFld As PivotField
Dim PvtItm As PivotItem
' set Pivot Table
Set PvtTbl = ActiveSheet.PivotTables("PivotTable1")
' set Pivot Field to "COB_TITLE"
Set PvtFld = PvtTbl.PivotFields("COB_TITLE")
' loop through all Pivot Items in "COB_TITLE" Pivot Field
For Each PvtItm In PvtFld.PivotItems
' check what is the Pivot item Name
Select Case PvtItm.Name
Case "CMD GRP", "G1", "G2" ' <-- visible Filter Items list
PvtItm.Visible = True
Case Else
PvtItm.Visible = False
End Select
Next PvtItm
End Sub