我遇到一个小问题,即假设取消保护我的工作表,刷新数据透视表并再次保护ws(有条件)。它只能部分工作,因为它取消了对ws的保护,它刷新了数据透视表,但之后发生了一些奇怪的事情: - 它并没有真正恢复行和列的格式化 - 它没有正确保护ws(当你点击工具,保护时我的ws看起来受到保护 - 但是,你可以在不再输入密码的情况下取消保护它?!!
Sub RefreshPivotTables()
' will remove password and refresh PT
Dim xpt As PivotTable
With ActiveSheet
.Unprotect Password:="milessss"
For Each xpt In Worksheets("WT-1").PivotTables
xpt.RefreshTable
Next xpt
.Protect Password:="milessss", AllowFormattingCells:=True, _
AllowFormattingRows:=True, AllowFormattingColumns:=True, _
AllowUsingPivotTables:=True, EnableOutlining:=True
End With
End Sub
有人可以帮忙吗? 干杯 - Mile`S
答案 0 :(得分:0)
简单的拼写错误:
.Protect AllowFormattingRows:=True
.Protect AllowFormattingColumns:=True
Rows
代替Raws
和Columns
代替Column
来源:Protection.AllowFormattingRows Property (Excel)
Typo已得到纠正,但要实现目标,您需要使用以下代码:
Private Sub RefreshPivotTables()
' will remove password and refresh PT
Dim xpt As pivotTable
With ActiveSheet
.Unprotect Password:="milessss"
For Each xpt In .PivotTables
xpt.RefreshTable
Next xpt
.Protect Password:="milessss", AllowFormattingCells:=True,AllowFormattingRows:=True, AllowFormattingColumns:=True, AllowUsingPivotTables:=True
End With
End Sub
实际上,您使用Protect功能多次使用不同的选项。因此,每次使用它时,都会删除您使用的旧选项。因此,在宏的末尾,唯一可用的属性是AllowUsingPivotTables
,但没有设置密码。所以你需要在一个表达式中设置所有参数。