我有一个自动打开的宏,并应用特殊的表格保护,允许对特定表格,程序数据进行分组和编辑。我的宏是这样的:
Private Sub Workbook_Open()
With Worksheets("Program Data")
.EnableOutlining = True
.Protect UserInterfaceOnly:=True, AllowFiltering:=True, AllowFormattingColumns:=True,
AllowInsertingRows:=True
End With
End Sub
现在,只要您打开文件,它就会立即运行,但它仅适用于程序数据。我不知道如何更改with语句以适应整个工作簿,而无需逐个命名工作表。但是有很多床单,所以这不是一个好选择。如何将此应用于文件中的所有工作表?
答案 0 :(得分: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
答案 1 :(得分: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
如果有帮助,请告诉我们。
答案 2 :(得分:3)
试试这个
For i = 1 To Worksheets.Count - 1
With Worksheets(i)
.EnableOutlining = True
.Protect UserInterfaceOnly:=True, AllowFiltering:=True, AllowFormattingColumns:=True, AllowInsertingRows:=True
End With
Next