VBA自动刷新数据透视表
请高人帮助修改这段代码PrivateSubWorkbook_SheetChange(ByValShAsObject,ByValTargetAsRange)Dimsh2As...
请高人帮助修改这段代码
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)Dim sh2 As WorksheetSet sh2 = Sheets("sheet4")If Sh.Name = "Sheet1" Then sh2.PivotTables("数据透视表1").PivotCache.RefreshEnd Sub以上代码是可以实时刷新'数据透视表'的
数据源在"Sheet1"里面,"Sheet1"表是密码保护的密码"1234‘","数据透视表"在"Sheet4"里面。
要求:"数据透视表"的工作表也是用密码"1234“保护的情况下,怎样用上面的代码在添加语句能够实现自动解开"数据透视表"的工作表保护后自动刷新"数据透视表",然后在自动用密码"1234"保护"数据透视表"的工作表。
谢谢!
此问题已经解决了,下面代码是我录制的宏改进后的代码,经测试通过!
下面代码放在数据透视表所在的Sheet工作表代码窗口里。
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Sheets("Sheet1").Select '数据透视表所在的Sheet1工作表
Range("A3").Select'透视表中的任一单元格
ActiveSheet.Unprotect Password:="1234"'密码保护工作表
ActiveSheet.PivotTables("数据透视表1").PivotCache.Refresh'自动刷新透视表
ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub 展开
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)Dim sh2 As WorksheetSet sh2 = Sheets("sheet4")If Sh.Name = "Sheet1" Then sh2.PivotTables("数据透视表1").PivotCache.RefreshEnd Sub以上代码是可以实时刷新'数据透视表'的
数据源在"Sheet1"里面,"Sheet1"表是密码保护的密码"1234‘","数据透视表"在"Sheet4"里面。
要求:"数据透视表"的工作表也是用密码"1234“保护的情况下,怎样用上面的代码在添加语句能够实现自动解开"数据透视表"的工作表保护后自动刷新"数据透视表",然后在自动用密码"1234"保护"数据透视表"的工作表。
谢谢!
此问题已经解决了,下面代码是我录制的宏改进后的代码,经测试通过!
下面代码放在数据透视表所在的Sheet工作表代码窗口里。
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Sheets("Sheet1").Select '数据透视表所在的Sheet1工作表
Range("A3").Select'透视表中的任一单元格
ActiveSheet.Unprotect Password:="1234"'密码保护工作表
ActiveSheet.PivotTables("数据透视表1").PivotCache.Refresh'自动刷新透视表
ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub 展开
2个回答
展开全部
当数据源中的数据更改后,数据透视表默认不会自动刷新。可以通过右击数据透视表,在弹出的快捷菜单中选择“刷新数据”(Excel 2003)或“刷新”(Excel 2007)来手动刷新数据透视表。如果需要自动刷新数据透视表,可以用下面的两种方法:
一、VBA代码
用一段简单的VBA代码,可以实现如下效果:当数据源中的数据更改后,切换到包含数据透视表的工作表中时,数据透视表将自动更新。假如包含数据透视表的工作表名称为“Sheet1”,数据透视表名称为“数据透视表1”。
1.按Alt+F11,打开VBA编辑器。
2.在“工程”窗口中,双击包含数据透视表的工作表,如此处的“Sheet1”表。
3.在右侧代码窗口中输入下列代码:
Private Sub Worksheet_Activate()
Sheets("Sheet1").PivotTables("数据透视表1").RefreshTableEnd Sub
4.关闭VBA编辑器。
二、打开工作簿时自动刷新数据透视表
Excel 2003:
1.右击数据透视表,在弹出的快捷菜单中选择“表格选项”。弹出“数据透视表选项”对话框。
2.在“数据源选项”下方选择“打开时刷新”。
3.单击“确定”按钮。
Excel 2007:
1.右击数据透视表,在弹出的快捷菜单中选择“数据透视表选项”。弹出“数据透视表选项”对话框。
2.选择“数据”选项卡,选择“打开文件时刷新”。
3.单击“确定”按钮。
这样,以后当更改数据源并保存后,重新打开该工作簿时,数据透视表将自动刷新。
一、VBA代码
用一段简单的VBA代码,可以实现如下效果:当数据源中的数据更改后,切换到包含数据透视表的工作表中时,数据透视表将自动更新。假如包含数据透视表的工作表名称为“Sheet1”,数据透视表名称为“数据透视表1”。
1.按Alt+F11,打开VBA编辑器。
2.在“工程”窗口中,双击包含数据透视表的工作表,如此处的“Sheet1”表。
3.在右侧代码窗口中输入下列代码:
Private Sub Worksheet_Activate()
Sheets("Sheet1").PivotTables("数据透视表1").RefreshTableEnd Sub
4.关闭VBA编辑器。
二、打开工作簿时自动刷新数据透视表
Excel 2003:
1.右击数据透视表,在弹出的快捷菜单中选择“表格选项”。弹出“数据透视表选项”对话框。
2.在“数据源选项”下方选择“打开时刷新”。
3.单击“确定”按钮。
Excel 2007:
1.右击数据透视表,在弹出的快捷菜单中选择“数据透视表选项”。弹出“数据透视表选项”对话框。
2.选择“数据”选项卡,选择“打开文件时刷新”。
3.单击“确定”按钮。
这样,以后当更改数据源并保存后,重新打开该工作簿时,数据透视表将自动刷新。
展开全部
透视表的数据本身就是不可以更改的,只能通过更改数据源才能得以更新,还要为它设置密码不是多此一举吗?只要解锁工作表1就行了。
以下代码功放在表4(数据透视表所在表)
Private Sub Worksheet_Activate()'用这个事件效率更高,当表4激活时刷新数据透视表
sheets(1).Unprotect Password:="1234"
sheets(4).PivotTables("数据透视表1").PivotCache.Refresh
sheets(1).protect Password:="1234"
End Sub
以下代码功放在表4(数据透视表所在表)
Private Sub Worksheet_Activate()'用这个事件效率更高,当表4激活时刷新数据透视表
sheets(1).Unprotect Password:="1234"
sheets(4).PivotTables("数据透视表1").PivotCache.Refresh
sheets(1).protect Password:="1234"
End Sub
追问
您好!非常感谢您的回答!
可能是我没说太清楚,问题是这样的:我这工作簿设计了一个录入页面单击按钮自动保存至源数据表,源数据表是密码保护的而且源数据表也是用密码隐藏看见的,
所以数据透视表必须得密码保护起来,目的就是不想让别人在数据透视表里操作只能看,有些数据不能让别人看见。
追答
sheets(4).Unprotect Password:="1234" 这个就是解锁的啊不会活用啊
一定要死答案
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询