2015-10-02 149 views
0

我有一個使用數據驗證的單元。當用戶在該單元格中選擇一個新值時,我需要2個特定數據透視表來刷新,而不是全部。這裏是我的代碼:單元格值更改時刷新特定數據透視表

Sub Update_Pivots(ByVal Target As Range) 
If Target.Address = Worksheets("Expense by Individual").Range("A3") Then 
    Worksheets("Expense by Individual").PivotTables("PivotTable2").PivotCache.Refresh 
    Worksheets("Expense Pivot").PivotTables("PivotTable3").PivotCache.Refresh 
End If 
End Sub 

當我編譯此,我不明白的錯誤,但是當我改變靶細胞,樞軸表不刷新。現在,這是作爲一個通用模塊寫成的,但我也嘗試在目標頁面的特定表格下(我不知道這是否有所作爲,但我想我會提到它)。我哪裏錯了?

更新過的代碼:

Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address = Worksheets("Expense by Individual").Range("A3").Address Then 
    Worksheets("Expense by Individual").PivotTables("PivotTable2").RefreshTable 
    Worksheets("Expense Pivot").PivotTables("PivotTable3").RefreshTable 
End If 
End Sub 
+0

爲什麼你不使用Worksheet_Change事件?你確定你的例程實際上是否被調用? –

+0

我改變了這一點,但它仍然沒有執行。查看更新的代碼。 –

+0

您是否將此例程放置在「個人支出」工作表的代碼模塊中? –

回答

-1

我最終想要改變數據透視表片的語言。正如A.S.H所建議的那樣,我將它用作代碼模塊,並刪除了對Excel工作表的所有引用,正如Excel Hero中提到的那樣。這裏是功能代碼:

Sub Worksheet_Change(ByVal Target As Range) 
Dim KeyCells As Range 
Dim pt As PivotTable 
Set KeyCells = Range("A2:A3") 
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then 
    For Each pt In ActiveSheet.PivotTables 
     Select Case pt.Name 
      Case "PivotTable3", "PivotTable2" 
       pt.RefreshTable 
      Case Else 
     End Select 
     Next pt 
End If 
End Sub 
1

你忘了.Address在比較,直接刷新魚雷艇:

If Target.Address = Worksheets("Expense by Individual").Range("A3").Address Then 
    Worksheets("Expense by Individual").PivotTables("PivotTable2").RefreshTable 
    Worksheets("Expense Pivot").PivotTables("PivotTable3").RefreshTable 
End If 

UPDATE

試試這個:

Sub Worksheet_Change(ByVal Target As Range) 
    Stop 
    If Target.Address = Worksheets("Expense by Individual").Range("A3").Address Then 
     PivotTables("PivotTable2").RefreshTable 
     Worksheets("Expense Pivot").PivotTables("PivotTable3").RefreshTable 
    End If 
End Sub 
+0

它仍然不會執行我。它什麼都不做,也沒有任何錯誤信息或任何東西。 –

+0

這絕對是一個問題。但現在它已修復,請嘗試刷新數據透視表而不是緩存。我會更新答案。 –

+0

不,我更新了代碼以反映您的RefreshTable建議,並確保沒有任何表單受到保護,但在單元格更改時仍未更新。 –

相關問題