2016-04-23 18 views
0

Excelワークシートにピボットテーブルがあります。 「Season」という名前のフィールドがあります。このフィールドは、複数の選択肢といくつかのブランク値を持つレポートフィールドです。 次のコードを使用して、空白の値がフィルタで選択されている(つまり、表示されている)かどうかを確認します。空白のPivotItemの可視性を検出する方法

Sub ShowVisbilityOfBlankItem() 

    Dim PivotField As PivotField 
    Set PivotField = ActiveSheet.PivotTables(1).PivotFields("Season") 

    Dim PivotItem As PivotItem 
    Set PivotItem = PivotField.PivotItems("(blank)") 

    Debug.Print PivotItem.Visible ' Runtime Error 13: Type mismatch 

End Sub 

ただし、最後の行は「ランタイムエラー13:タイプの不一致」となります。これは他のPivotItemでは発生しません。これはExcel(2010)のバグですか、私のコードですか?空白が表示されているかどうかを判断する別の方法はありますか?

ブランクの視認性を設定することができますPivotItem。また、ローカルウィンドウには、表示されているかどうかにかかわらず、の値がPivotItem.Visibleに表示されます。

+0

あなたのコードは私のために働き、 '.Visible'の正しい値を返します。エラーなし13. – OldUgly

+0

使用しているExcelのバージョンは何ですか?私はExcelのバージョンを選択できない企業環境で働いています。 –

+0

Excel 2010 on Win10。 – OldUgly

答えて

1

一部をグーグルと同じエラーを取得した後、私は別の質問にこの回答に出くわした: https://stackoverflow.com/a/39107082/1626443

私は問題がExcelの言語バージョンに関係していると思うと値がある場合にのみ処理することができます文字通り(blank)です。私はドイツ語版を使用しています。それ以前は(leer)であり、動作しませんでした。

これは私のためにエラー削除:

sStore = pi.Value 
pi.Value = sStore 
If pi.Visible Then 'no more error 

注意を、あなたが技術的に一度だけ、それを行う必要があると私は次のコードが同様に動作するはずだと思う:

If pi.Value = "(BLANK_IN_YOUR_LANGUAGE)" Then pi.Value = "(blank)" 

、潜在的にも、この1つ:

If pi.Value = "(BLANK_IN_YOUR_LANGUAGE)" Then pi.Value = pi.Value 

正直言って非常に奇妙で不満なバグです。

私はこれが1年前だと知っていますが、それでもあなたや他の誰かが彼の旅の途中でPivotItemsに役立つかもしれません。

+0

問題は、言語がドイツ語で、言語が英語の場合(他の言語を試していない場合)にのみ発生することが確認できます。また、 'PivotItem.Value = PivotItem'(一度)を設定すると、ランタイムエラーがなくなることもあります。しかし、ディスプレイに ''(leer) "'と表示されているにもかかわらず、空白の 'PivotItem'が' '(空白)" 'であることがわかります。 –