将受保护的工作表宏应用于工作簿中的所有工作表

Mik*_*e L 2 excel vba excel-vba

我有一个自动打开的宏,并应用一个特殊的表单保护,允许对特定表单程序数据进行分组和编辑.我的宏是这样的:

Private Sub Workbook_Open()
  With Worksheets("Program Data")
   .EnableOutlining = True
   .Protect UserInterfaceOnly:=True, AllowFiltering:=True, AllowFormattingColumns:=True,    
    AllowInsertingRows:=True
  End With
End Sub
Run Code Online (Sandbox Code Playgroud)

现在,只要您打开文件,它就会立即运行,但它仅适用于程序数据.我不知道如何更改with语句以适应整个工作簿,而无需逐个命名工作表.但是有很多床单,所以这不是一个好选择.如何将此应用于文件中的所有工作表?

Sid*_*out 10

您可以像这样循环遍历工作表对象(UNTESTED).

Private Sub Workbook_Open()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        With ws
            .EnableOutlining = True
            .Protect UserInterfaceOnly:=True, AllowFiltering:=True, _
            AllowFormattingColumns:=True, AllowInsertingRows:=True
        End With
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)


Jer*_*ino 9

你想要一个For针对所有工作表的循环.基本上...

Private Sub Workbook_Open()
  Dim WS As Worksheet
  For Each WS in ThisWorkbook.Worksheets
    With WS
    .EnableOutlining = True
    .Protect UserInterfaceOnly:=True, AllowFiltering:=True, AllowFormattingColumns:=True,    
    AllowInsertingRows:=True
    End With
  Next WS
End Sub
Run Code Online (Sandbox Code Playgroud)

如果这有帮助,请告诉我们.