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

Vba 将受保护的工作表宏应用于工作簿中的所有工作表,vba,excel,Vba,Excel,我有一个宏,可以自动打开并应用特殊的工作表保护,允许对特定工作表、程序数据进行分组和编辑。我的宏是: Private Sub Workbook_Open() With Worksheets("Program Data") .EnableOutlining = True .Protect UserInterfaceOnly:=True, AllowFiltering:=True, AllowFormattingColumns:=True, AllowInsertin

我有一个宏,可以自动打开并应用特殊的工作表保护,允许对特定工作表、程序数据进行分组和编辑。我的宏是:

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

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

您可以像这样在工作表对象中循环(未测试的


您需要一个针对所有图纸的
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
让我们知道这是否有用。

试试这个

For i = 1 To Worksheets.Count - 1
    With Worksheets(i)
        .EnableOutlining = True
        .Protect UserInterfaceOnly:=True, AllowFiltering:=True,  AllowFormattingColumns:=True,     AllowInsertingRows:=True
    End With
Next

嘎,快24秒。:)+1击中目标:)谢谢你这么多的答案!
For i = 1 To Worksheets.Count - 1
    With Worksheets(i)
        .EnableOutlining = True
        .Protect UserInterfaceOnly:=True, AllowFiltering:=True,  AllowFormattingColumns:=True,     AllowInsertingRows:=True
    End With
Next