2014-03-27 60 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將其名稱從「我的數據」更改爲「我的數據計數」。因此,如果您嘗試將「我的數據計數」設置爲隱藏,您可能實際上正在對「我的數據」進行操作。

相關問題