2016-09-19 8 views
0

2つのセル値に基づいて、PowerPivotピボットテーブルを更新しようとしています。エンドユーザは、セルC17とC18のドロップダウンリストを使用してセルG17とG18の値を導き出します(あるExcelの計算によって)。ピボットテーブルは、セルG17とG18に基づいて更新されます。Excelピボットテーブルのコントロールフィルター(VBAによるセル値から)

私は以下のようにコードをスクリプト化しましたが、C17とC18のドロップダウンリストから値を選択してもピボットテーブルが更新されないため、動作しないようです。

Sub Worksheet_SelectionChange(ByVal Target As Range) 

If Intersect(Target, Range("G17:G19")) Is Nothing Then Exit Sub 

Dim pt As PivotTable 
Dim FieldHr As PivotField 
Dim FieldEndingMin As PivotField 
Dim NewHr As String 
Dim NewMin As String 

Set pt = Worksheets("Calculator").PivotTables("Table1") 
Set FieldHr = pt.PivotFields("Hr") 
NewHr = Worksheets("Calculator").Range("G17").Value 
Set FieldEndingMin = pt.PivotFields("Ending Min") 
NewMin = Worksheets("Calculator").Range("G18").Value 

With pt 
FieldHr.ClearAllFilters 
FieldHr.CurrentPage = NewHr 
FieldEndingMin.ClearAllFilters 
FieldEndingMin.CurrentPage = NewMin 
pt.RefreshTable 
End With 

End Sub 
+0

お困りですか?または何も更新されていませんか? –

答えて

0

私はWorksheet_SelectionChangeからWorksheet_Changeイベントにコードを移動しました。

範囲のUnion、細胞C17:C18に細胞G17:G19を加えました(あなたの記事ではG17:G18が必要です)。

Private Sub Worksheet_Change(ByVal Target As Range) 

If Intersect(Target, Union(Range("C17:C18"), Range("G17:G19"))) Is Nothing Then Exit Sub 

Dim pt     As PivotTable 
Dim FieldHr   As PivotField 
Dim FieldEndingMin  As PivotField 
Dim NewHr    As String 
Dim NewMin    As String 

Set pt = Worksheets("Calculator").PivotTables("Table1") 
Set FieldHr = pt.PivotFields("Hr") 
NewHr = Worksheets("Calculator").Range("G17").Value 
Set FieldEndingMin = pt.PivotFields("Ending Min") 
NewMin = Worksheets("Calculator").Range("G18").Value 

With FieldHr 
    .ClearAllFilters 
    .CurrentPage = NewHr 
End With 

With FieldEndingMin 
    .ClearAllFilters 
    .CurrentPage = NewMin 
End With 

pt.RefreshTable 

End Sub 
関連する問題