一、VBA代码
用一段简单的VBA代码,可以实现如下效果:当数据源中的数据更改后,切换到包含数据透视表的工作表中时,数据透视表将自动更新。假如包含数据透视表的工作表名称为“Sheet1”,数据透视表名称为“数据透视表1”。
1.按Alt+F11,打开VBA编辑器。
2.在“工程”窗口中,双击包含数据透视表的工作表,如此处的“Sheet1”表。
3.在右侧代码窗口中输入下列代码:
Private Sub Worksheet_Activate()
Sheets("Sheet1").PivotTables("数据透视表1").RefreshTable
End Sub
保存 退出。
然而 修改源数据后与之对应的数据透视表 仍然不能自动更新,请问如何解决?
数据透视表 使用VBA代码后为什么不能自动刷新是怎么回事
答案:1 悬赏:10 手机版
解决时间 2021-03-16 16:05
- 提问者网友:温旧梦泪无声
- 2021-03-15 15:08
最佳答案
- 五星知识达人网友:走死在岁月里
- 2021-03-15 16:23
1)如果数据透视表名被修改,不再是"数据透视表1",则执行不了。可改成如下代码,不论多少透视表,叫什么名,都能刷新。
Private Sub Worksheet_Activate()
Dim myPivot As PivotTable
For Each myPivot In Me.PivotTables
myPivot.RefreshTable
Next
Set myPivot = Nothing
End Sub
2)数据透视表的数据源是否被设为固定区域了?最好将数据源设为指定的名称。之前区域定义为名称,行数可自动变化,如新建名称rngPivot, =offset(sheet2!$A$1,0,0,counta(sheet2!A:A),counta(sheet2!1:1))
3)如果还不行,那就是动作响应被关闭了,需要恢复一下。
可在立即窗口执行如下代码:Application.EnableEvents = True
Private Sub Worksheet_Activate()
Dim myPivot As PivotTable
For Each myPivot In Me.PivotTables
myPivot.RefreshTable
Next
Set myPivot = Nothing
End Sub
2)数据透视表的数据源是否被设为固定区域了?最好将数据源设为指定的名称。之前区域定义为名称,行数可自动变化,如新建名称rngPivot, =offset(sheet2!$A$1,0,0,counta(sheet2!A:A),counta(sheet2!1:1))
3)如果还不行,那就是动作响应被关闭了,需要恢复一下。
可在立即窗口执行如下代码:Application.EnableEvents = True
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯