2

运行时错误“1004”:无法设置 PivotItem 类的 Visible 属性

Excel VBA:

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

Set pf = pt.PivotFields("Snapshot Date")

For Each pi In pf.PivotItems
If pi.Name <> "(blank)" Then
pi = DateValue(pi) 'I have tried using Cdate, Cdbl, Cstr as well.  
End If
Next pi

错误发生在这里:

i = 1
Do Until i >= pf.PivotItems.count - 1

For Each pi In pf.PivotItems
pi.Visible = False 'Error here
Next pi

pf.PivotItems(i).Visible = True '.. And here!
pf.PivotItems(i + 1).Visible = True
Loop

数据透视项目是日期,不确定是否需要在打开/关闭可见性之前对其进行格式化?

我无休止地用谷歌搜索,找不到任何解决方案:(关于非连续项目的一些东西,但我不太明白。

4

2 回答 2

2

您必须至少有一个可见的 PivotItem 并且您将它们全部设置为不可见。您需要遍历所有 PivotItems,将第一个设置为可见 = True,然后测试所有其余的并相应地设置它们,然后测试第一个并相应地设置它。这样您就可以确保始终有一个可见的 PivotItem。

但是,我不确定您的测试是什么。你有一个循环,但不要增加“i”,所以它会永远循环,总是试图将 PivotItems 1 和 2 设置为可见。

我不知道你为什么会出现第二个错误,但如果你能解释你想要做什么,可能会有更好的方法。

于 2012-05-07T20:33:40.647 回答
0

对于使用 google 找到此页面的任何人(就像我一样),我找到了解决此问题的方法。

问题似乎只是设置visible = true

设置visible = false似乎工作正常。

如果您禁用多项选择然后重新启用它,则会选择所有类别。

从那时起,您可以循环并将 visible = false 设置为您想要的。

请参阅下面的示例(工作)代码:-

Dim table As PivotTable
Dim PvI As PivotItem

Set table = ActiveSheet.PivotTables("PivotTable3")
With table.PivotFields("ERROR CODE")
    .ClearAllFilters
    .EnableMultiplePageItems = False
    .CurrentPage = "(All)"
    .EnableMultiplePageItems = True
    For Each PvI In .PivotItems
        Select Case PvI.Name
        Case "Err0"
            PvI.Visible = False
        End Select
    Next
End With

希望这可以帮助某人。

于 2014-01-17T07:29:01.193 回答