【发布时间】:2019-08-06 05:20:24
【问题描述】:
SNapshot 我有一个只需要显示最后 13 个项目(周)的数据透视表。下面是我使用的代码。但是,无论透视中项目的可见状态如何,它都不会改变,甚至强制它为真/假。已经尝试过 if/else 语句,但仍然可见状态没有改变。
感谢您对此的帮助。谢谢!
Sub ShowLastXDays()
Dim pi As PivotItem
Dim lLoop As Long
Dim pt As PivotTable
Dim pf As PivotField
Dim lCount As Long
Dim lDays As Long
Dim Count As Long
On Error Resume Next
lDays = 13
' Application.ScreenUpdating = False
Set pt = ActiveSheet.PivotTables("WeeklyPivot")
' Count = pt.PivotFields("[FTYieldData].[Week].[Week]").PivotItems.Count
Set pf = ActiveSheet.PivotTables("WeeklyPivot").PivotFields("[FTYieldData].[Week].[Week]")
For Each pi In pf.PivotItems
pi.Visible = False 'issue encountered. after False code, pi.VISIBLE value remains TRUE (not skipped)
Next pi
With pt.PivotFields("[FTYieldData].[Week].[Week]")
Count = .PivotItems.Count
For lLoop = .PivotItems.Count To 1 Step -1
.PivotItems(lLoop).Visible = True 'issue encountered. after TRUE code, since earlier it was not change to FALSE (no error encountered)
lCount = lCount + 1
If lCount = lDays Then Exit For
Next lLoop
End With
On Error GoTo 0
【问题讨论】:
-
您是否尝试使用
F8运行您的?如果不能,您可以这样做,并在每个步骤中查看正在执行的内容以及正在跳过的内容。 -
@Mikku 我试过这样做,没有任何内容被跳过。事实上所有的行都在执行。如果项目可见 (TRUE),使用上面的行将其设置为 false 不会使项目隐藏并仍保持为 TRUE。
-
这是我认为的问题。删除行
.ClearAllFilters并尝试运行您的代码。此行使所有项目可见,使您之前的循环无用。 -
已经在代码中删除了它,但对于 TRUE(后者)和 FALSE(代码的早期部分)值仍然存在。
-
第一个代码 pi.Visible = False 上显示错误。我添加了一个 If 语句,仅当它为真时才将其设为 FALSE。但是,在第一项中,Visible 是 TRUE,即使它没有在枢轴中被选中。
标签: excel vba pivot olap visible