密码保护在Excel中的所有工作表打开,不pipe名字?
我想用密码保护所有工作表,同时保留概述选项。 我有这个代码集打开工作簿时运行:
Option Explicit Private Sub Workbook_Open() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets With ws .Protect "password1", , , , True .EnableOutlining = True .Protect Contents:=True, UserInterfaceOnly:=True End With End Sub
不幸的是,它不起作用 – 打开工作簿后,一些表保持不受保护。 我有另一个VBA方法,通过硬编码引用单独的工作表选项卡名称:
Private Sub Workbook_Open() With Sheets("Instructions Worksheet") .Protect "password1", , , , True .EnableOutlining = True End With
此代码工作,但我想避免这一点 – 如果一个选项卡被重命名,那么你会得到一个运行时错误。 在打开工作簿时如何成功地引用和密码保护所有工作表,而无需硬编码? 我的代码有什么问题?
在VBA For
循环中,需要使用variables名称来closuresNext
语句。
所以在你的代码中你有
For Each ws In ThisWorkbook.Worksheets
这需要closures一个
Next ws
完整的代码如下所示:
Private Sub Workbook_Open() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets With ws .Protect "password1", , , , True .EnableOutlining = True .Protect Contents:=True, UserInterfaceOnly:=True End With Next ws End Sub