尝试解决我在运行下面的特定变体时收到的错误消息。以下实际上是完美的,我从Sidarth的评论中使用了它。但是,问题出现在以下情况之后:
Sub test()
Dim table As PivotTable
Dim PvI As PivotItem
Set table = Worksheets("Sheet1").PivotTables("PivotTable1")
With table.PivotFields("Week")
For Each PvI In .PivotItems
Select Case PvI.Name
Case "6", "7"
PvI.Visible = True
Case Else
PvI.Visible = False
End Select
Next
End With
当我尝试更换
时 Case "6", "7"
通过类似的方式尝试使标准变得灵活:
Case Cells(2, 10).Value + 1
或者
Case "cells(2,10).Value", "Cells(3,10).value"
以下行错误:
PvI.Visible = False
出现以下错误:
“无法设置pivotitem类的可见属性”
您是否知道为什么当我使用多个单元格引用时,或者甚至在语法中添加看似谨慎的“+1”时,它不会让我将其余部分设置为false。作为旁注,如果我消除Case Else以下的所有内容,它会起作用,然而,这对我没有任何好处,因为除了所选标准之外我想要隐藏所有内容。有什么想法吗? (非常感谢)。
答案 0 :(得分:0)
有趣。
所以我在这个问题上所做的工作是在单元格J2中(由单元格(2,10)引用.value 我把我的一周。然后在J3(现在称为单元格(3,10).value我把= j2 + 1
然后,我在VB中使用了“TO”关键字,如下所示,它有效!很甜蜜。看起来像一个漂亮的盗版解决方法。
With table.PivotFields("Week")
For Each PvI In .PivotItems
Select Case PvI.Name
Case Cells(2, 10).Value To Cells(3, 10).Value
PvI.Visible = True
Case Else
PvI.Visible = False
End Select
Next
End With
答案 1 :(得分:0)
我不确定为什么Case Cells(2, 10).Value + 1
不起作用...我想到的一件事是它发生的原因是在设置可见属性之后一些PivotItem你没有可见的项目,你至少需要一个。其他解释是PivotItem的名称是字符串而 Case 是一个数字,但VBA应该隐式转换数据类型。我仍然建议使用CStr
函数进行说明。现在
Case "cells(2,10).Value", "Cells(3,10).value"
是完全错误的,因为您正在根据文字字符串检查PivotItem值,而不是单元格的值。
顺便说一句,看看以下语法:
PI.Visible = (PI.Value = "6" Or PI.Value = "7")