|
因为在工作表中有很多公式计算,同时又建立了两个数据透视表,公式为了防止被改动,因此锁定了工作表,只想数透表在源数据变化时自动更新。但因为工作表锁定了,数透表的数据也无法更新,虽然在坛子里找到了一些解决办法,但总感觉还是不太完美。
一,在切换到含数透表的工作表后能自动刷新,但无法把变动的数据在数透表中显现出来,只有取消锁定才能显现。
Private Sub Worksheet_Activate()
ActiveSheet.PivotTables("数据透视表1").PivotCache.Refresh
End Sub
这个代码能自动刷新,但在锁定下无法更新数据。又在http://club.excelhome.net/thread-320880-1-1.html中发现:
Private Sub CommandButton1_Click()
Sheets("1").Unprotect Password:="123"
Sheets("2").Unprotect Password:="123"
ActiveWorkbook.RefreshAll
Sheets("1").Protect AllowUsingPivotTables:=True, Password:="123"
Sheets("2").Protect AllowUsingPivotTables:=True, Password:="123"
Sheets("1").Activate
End Sub
-------------------------------------------------------------------------------
Private Sub Workbook_Open()
Sheets("1").Unprotect Password:="123"
Sheets("2").Unprotect Password:="123"
ActiveWorkbook.RefreshAll
Sheets("1").Protect AllowUsingPivotTables:=True, Password:="123"
Sheets("2").Protect AllowUsingPivotTables:=True, Password:="123"
Sheets("1").Activate
End Sub
这个代码看演示是能正常更新的,但放在我的表中还是不能成功,后来反复尝试发现要添加按钮手动刷新才能更新。
把前面两段重新编辑了下,可就以实现切换后自动刷新数据了。
Private Sub Worksheet_Activate()
ActiveSheet.PivotTables("数据透视表1").PivotCache.Refresh
Sheets("1").Unprotect Password:="123"
ActiveWorkbook.RefreshAll
Sheets("1").Protect AllowUsingPivotTables:=True, Password:="123"
Sheets("1").Activate
End Sub
喜欢手动的就可以用@excel0913的办法,感谢各位大神的贡献,作为初学者,不懂E的也只能这样凑活了。
|
|