首页 文章

Excel VBA错误1004无法设置可见性

提问于
浏览
0

我对excel vba有一个奇怪的错误 . 我试图在数据透视表中为日期值设置可见性为false . 我的代码在虚拟表上工作正常,但它在我的真实表上返回错误(1004) .

Sub MultiItemPivotFilter2()
Dim PI As PivotItem


Sheets("Pivot_stocks_1").PivotTables("Pivot_Stocks_1").RefreshTable


 For Each PI In Sheets("Pivot_stocks_1").PivotTables("Pivot_Stocks_1").PivotFields("date2").PivotItems


 If DateValue(PI.Name) < DateValue(Sheets("Pivot_stocks_1").Range("J13").Value) Then

             PI.Visible = False
          Else
              PI.Visible = True
          End If

    Next PI
End Sub

错误发生在行 PI.Visible = False

(无法设置PivotItem类的Visible属性)

2 回答

  • 0

    也许这会对你有所帮助:

    unable to set the visible property of the pivotitem class

    Excel有时不会从数据透视表所基于的pivotcache中删除旧条目 . 在某些项目可能存在于源数据中但是excel将其保留在缓存中以进行优化 . 刷新缓存不能解决问题 . 只有删除方法才能删除缓存并重新创建它 .

  • 0

    您应该始终执行select true循环,然后执行select false循环 . 原因是Excel一次只执行一个并且不允许您将所有内容隐藏在数据透视表中,它会出错(或者你有什么)所以:

    Sub MultiItemPivotFilter2()
        Dim PI As PivotItem
    
        With Sheets("Pivot_stocks_1").PivotTables("Pivot_Stocks_1")
            .RefreshTable
    
            'Loop first setting all to "True"
            For Each PI In .PivotFields("date2").PivotItems
                PI.Visible = True
            Next PI
    
            'Loop then setting any "False"
            For Each PI In .PivotFields("date2").PivotItems
                If DateValue(PI.Name) < DateValue(Sheets("Pivot_stocks_1").Range("J13").Value) Then
                   PI.Visible = False
                End If
             Next PI
        End With
    End Sub
    

    希望有道理!

    Edit

    即使它没有解决您的问题,您也应该在隐藏pivotItems时始终实现此逻辑

相关问题