宏不能正确保护我的 ws

Macro doesn't protect back my ws properly

我的宏有一个小问题,假设取消保护我的工作表,刷新 Pivot Table 并再次保护 ws(有条件)。它只能部分正常工作,因为它确实取消了对 ws 的保护,它刷新了 Pivot Table,但之后发生了一些奇怪的事情: - 它并没有真正恢复行和列的格式 - 它不能正确保护 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

简单的拼写错误:

  .Protect AllowFormattingRows:=True
  .Protect AllowFormattingColumns:=True

Rows 而不是 RawsColumns 而不是 Column

来源:Protection.AllowFormattingRows Property (Excel)

拼写错误已更正,但要实现您的目标,您需要使用此代码:

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

事实上,您多次使用不同选项的保护功能。因此,每次使用它时,您都会删除使用过的旧选项。因此在宏的末尾,唯一可用的 属性 是 AllowUsingPivotTables 但没有设置密码。所以你需要在一个表达式中设置所有参数。