2014-03-27 59 views
1

希望这将是一件容易的事情,但我无法找到此特定场景的答案。我使用下面的代码来隐藏和取消隐藏基于用户选择的数据透视表字段。变量fieldShow是一个布尔值,如果用户想要查看特定字段,则该值为true,而fieldLastVal是一个布尔值,用于指示该字段当前是否显示。无法将数据透视字段设置为隐藏

If fieldShow <> fieldLastVal Then 
    If fieldShow Then 
     With pt.PivotFields(fieldName) 
      .Orientation = xlDataField 
      .Function = xlSum 
     End With 
    Else 
     pt.PivotFields(fieldName).Orientation = xlHidden 
    End If 
End If 
fieldLastVal = fieldShow 

问题是在行隐藏透视字段。事情是,代码执行得很好。没有错误,没有任何东西。但是,它实际上从未隐藏透视图字段。它仍然存在,好像什么都没有发生。我遍历代码,并且该行肯定会执行,它对数据透视表没有任何影响,我不明白为什么。

将旋转字段的方向设置为xlDataField的行具有所需的效果。我不确定这里发生了什么。

Anythoughts?

+0

这行代码看起来像应该工作,假设'fieldName'是有效的。如果它无效,你会得到一个错误,除非你在上游某处获得了“On Error Resume Next”。你不这样做? –

+0

没有。没有'On Error'语句。而且'fieldName'肯定是有效的,因为'... Orientation = xlDataField'语句中相同的'fieldName'变量可以很好地工作。因此我的困惑。 –

+1

我还有一个想法。将一个数据透视表的'Orientation'改为'xlDataField'会改变它的名字,例如从“我的数据”改为“我的数据计数”。所以如果你想设置一个隐藏的数据字段,你可能实际上正在对另一个数据字段进行操作。 –

回答

0

将主题字段的Orientation更改为xlDataField将其名称从“我的数据”更改为“我的数据计数”。因此,如果您尝试将“我的数据计数”设置为隐藏,您可能实际上正在对“我的数据”进行操作。

相关问题