2

コードを使用して、セルの値に応じて 1 つのピボットの 1 つのピボット フィールドを変更しています (セルにはテキストが含まれており、別のセルへの参照ではありません)。最も奇妙なことは、私が持っているほとんどすべての値で機能しますが、すべてでは機能しないことです...

コードは次のとおりです。

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Sheets("Sheet2").Range("D1")) Is Nothing Then
Sheets("Sheet2").PivotTables("PivotTable1").PivotFields("Field1"). _
ClearAllFilters
Sheets("Sheet2").PivotTables("PivotTable1").PivotFields("Field1").CurrentPage _
= Sheets("Sheet2").Range("D1").Value
End If
End Sub

デバッグは、問題は次の行にあると言います

Sheets("Sheet2").PivotTables("PivotTable1").PivotFields("Field1").CurrentPage _=      Sheets("Sheet2").Range("D1").Value

エラーは次のように表示されます:「実行時エラー '1004' アプリケーション定義またはオブジェクト定義のエラー」。

誰か助けてくれませんか?どうもありがとうございました!

psピボットフィールドを変更するために使用されるテキストを含むセルの値は、ピボットから値を取得する別のマクロによって変更されるため、値が存在し、すべての値の形式が同じであるため、わかりません何が問題なのか...

4

1 に答える 1

0

正確には専門家ではありませんが、いくつかの調査の後、次のコードを試すことをお勧めします。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim pt As PivotTable

If Not Intersect(Target(1, 1), Range("D1")) Is Nothing Then
    Set pt = Me.PivotTables(1)
    With pt
        .RefreshTable
        .PivotFields("Field1").CurrentPage = Range("D1").Text
    End With
End If
End Sub

プロセスが少し遅くなる可能性があります。

于 2012-12-14T15:03:34.530 に答える