我有一个使用数据验证的单元格。当用户在该单元格中选择一个新值时,我需要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
我最终需要更改数据透视表部分的语言。正如ASH所建议的那样,我将其用作代码模块,并删除了对工作表的所有引用,如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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句