错误“1004”:无法设置 PivotItem class 的可见 属性
Error '1004': Unable to set the Visible property of the PivotItem class
我从这里得到了以下代码:Looping through report filters to change visibility doesn't work 其中解决方案被标记为有效。根据我的需要修改后是这样的:
With pt.PivotFields(6)
.ClearAllFilters
If .PivotItems.Count > 0 Then
'goofy but necessary
Set firstPi = .PivotItems(1)
For Each pi In .PivotItems
If firstPi.Visible = False Then
firstPi.Visible = True
End If
'Don't loop through firstPi
If pi.Value <> firstPi.Value Then
itemValue = pt.GetPivotData("[Measures].[Nr of Cancelled]", "[Characteristics].[Reason]", pi.Name).Value
rw = rw + 1
nwSheet.Cells(rw, 1).Value = pi.Name
nwSheet.Cells(rw, 2).Value = pi.Visible
If itemValue < 2000 Then
If pi.Visible = True Then
pi.Visible = False 'Error here
End If
Else
MsgBox pi.Value
If pi.Visible = False Then
pi.Visible = True 'Error here
End If
End If
End If
Next
'Finally perform the check on the first pivot item
If firstPi > 2000 Then
firstPi.Visible = True
Else
firstPi.Visible = False
End If
End If
End With
我看到整个代码工作正常,我只遇到 pi.Visible = True
或 pi.Visible = False
行的错误
我不确定我哪里做错了导致代码不起作用。
当我在互联网上搜索解决方案时,我遇到了这个 link: https://support.microsoft.com/en-us/kb/114822 MS 提到 Only contiguous可以隐藏数据透视表字段中的项目。
这是否意味着我的 table 中的项目不连续?谁能帮我?我迷路了。
我没有找到错误的任何解决方案。但是我找到了另一种方法来完成任务。我使用数组存储所有要隐藏的项目和要显示的项目,以便我可以调用 HiddenItemsList 或 VisibleItemsList:
For Each pvtitem In pt.PivotFields(6).PivotItems
On Error GoTo skipreason
itemValue = pt.GetPivotData("[Measures].[Cancelled]", "[Characteristics].[Reason]", pvtitem.Name).Value
If itemValue < 2000 Then
hiddenReasons(hiddenCount) = pvtitem.Name
hiddenCount = hiddenCount + 1
Else
visibleReasons(visibleCount) = pvtitem.Name
visibleCount = visibleCount + 1
End If
Sheets("Cancels").PivotTables("Cancels").PivotFields( _
"[Characteristics].[Reason].[Reason]" _
).VisibleItemsList = Array(visibleReasons())
这已经晚了 5 年零 6 个月,但我可能已经找到了解决方案,同时还在研究我的脚本。当枢轴 table 必须调整大小时,并且枢轴 table 下方有元素时,错误只能在我这边复制。这与调整大小是否会导致它超限无关(例如,我应用了“前 10 个”过滤器)——事实上,对我来说 table 试图缩小。一旦我堆叠了我的枢轴 tables side-to-side 而不是垂直堆叠,我就无法再复制错误。
我从这里得到了以下代码:Looping through report filters to change visibility doesn't work 其中解决方案被标记为有效。根据我的需要修改后是这样的:
With pt.PivotFields(6)
.ClearAllFilters
If .PivotItems.Count > 0 Then
'goofy but necessary
Set firstPi = .PivotItems(1)
For Each pi In .PivotItems
If firstPi.Visible = False Then
firstPi.Visible = True
End If
'Don't loop through firstPi
If pi.Value <> firstPi.Value Then
itemValue = pt.GetPivotData("[Measures].[Nr of Cancelled]", "[Characteristics].[Reason]", pi.Name).Value
rw = rw + 1
nwSheet.Cells(rw, 1).Value = pi.Name
nwSheet.Cells(rw, 2).Value = pi.Visible
If itemValue < 2000 Then
If pi.Visible = True Then
pi.Visible = False 'Error here
End If
Else
MsgBox pi.Value
If pi.Visible = False Then
pi.Visible = True 'Error here
End If
End If
End If
Next
'Finally perform the check on the first pivot item
If firstPi > 2000 Then
firstPi.Visible = True
Else
firstPi.Visible = False
End If
End If
End With
我看到整个代码工作正常,我只遇到 pi.Visible = True
或 pi.Visible = False
我不确定我哪里做错了导致代码不起作用。
当我在互联网上搜索解决方案时,我遇到了这个 link: https://support.microsoft.com/en-us/kb/114822 MS 提到 Only contiguous可以隐藏数据透视表字段中的项目。 这是否意味着我的 table 中的项目不连续?谁能帮我?我迷路了。
我没有找到错误的任何解决方案。但是我找到了另一种方法来完成任务。我使用数组存储所有要隐藏的项目和要显示的项目,以便我可以调用 HiddenItemsList 或 VisibleItemsList:
For Each pvtitem In pt.PivotFields(6).PivotItems
On Error GoTo skipreason
itemValue = pt.GetPivotData("[Measures].[Cancelled]", "[Characteristics].[Reason]", pvtitem.Name).Value
If itemValue < 2000 Then
hiddenReasons(hiddenCount) = pvtitem.Name
hiddenCount = hiddenCount + 1
Else
visibleReasons(visibleCount) = pvtitem.Name
visibleCount = visibleCount + 1
End If
Sheets("Cancels").PivotTables("Cancels").PivotFields( _
"[Characteristics].[Reason].[Reason]" _
).VisibleItemsList = Array(visibleReasons())
这已经晚了 5 年零 6 个月,但我可能已经找到了解决方案,同时还在研究我的脚本。当枢轴 table 必须调整大小时,并且枢轴 table 下方有元素时,错误只能在我这边复制。这与调整大小是否会导致它超限无关(例如,我应用了“前 10 个”过滤器)——事实上,对我来说 table 试图缩小。一旦我堆叠了我的枢轴 tables side-to-side 而不是垂直堆叠,我就无法再复制错误。