2

実行時エラー「1004」:PivotItemクラスのVisibleプロパティを設定できません

Excel VBA:

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

Set pf = pt.PivotFields("Snapshot Date")

For Each pi In pf.PivotItems
If pi.Name <> "(blank)" Then
pi = DateValue(pi) 'I have tried using Cdate, Cdbl, Cstr as well.  
End If
Next pi

ここでエラーが発生します:

i = 1
Do Until i >= pf.PivotItems.count - 1

For Each pi In pf.PivotItems
pi.Visible = False 'Error here
Next pi

pf.PivotItems(i).Visible = True '.. And here!
pf.PivotItems(i + 1).Visible = True
Loop

ピボットアイテムは日付です。表示をオン/オフにする前にフォーマットする必要があるかどうかわかりませんか?

私は際限なくグーグルで検索しましたが、これに対する解決策を見つけることができませんでした:(隣接していないアイテムについて何かがありますが、私は完全には理解していません。

4

2 に答える 2

2

少なくとも1つの表示可能なPivotItemが必要であり、それらすべてを非表示に設定しています。すべてのPivotItemをループし、最初のPivotItemをvisible = Trueに設定し、残りをすべてテストしてそれに応じて設定し、最初のPivotItemをテストしてそれに応じて設定する必要があります。そうすれば、表示されるPivotItemが常に1つあることを確認できます。

しかし、あなたのテストが何であるかはよくわかりません。ループがありますが、「i」をインクリメントしないでください。そのため、常にPivotItems1と2を表示に設定しようとすると永久ループになります。

2番目のエラーが発生する理由はわかりませんが、何をしようとしているのかを説明できれば、もっと良い方法があるかもしれません。

于 2012-05-07T20:33:40.647 に答える
0

Google を使用してこのページを見つけた人 (私がしたように) のために、これを回避する方法を見つけました。

問題はvisible = trueのみを設定しているようです。

visible = falseを設定するとうまくいくようです。

複数選択を無効にしてから再度有効にすると、すべてのカテゴリが選択されます。

その時点から、ループしてvisible = falseを必要なものに設定できます。

以下の私の例(動作中)のコードを参照してください:-

Dim table As PivotTable
Dim PvI As PivotItem

Set table = ActiveSheet.PivotTables("PivotTable3")
With table.PivotFields("ERROR CODE")
    .ClearAllFilters
    .EnableMultiplePageItems = False
    .CurrentPage = "(All)"
    .EnableMultiplePageItems = True
    For Each PvI In .PivotItems
        Select Case PvI.Name
        Case "Err0"
            PvI.Visible = False
        End Select
    Next
End With

これが誰かに役立つことを願っています。

于 2014-01-17T07:29:01.193 に答える