我有一本用于多年项目回报的工作簿。我在 ThisWorkbook 中设置了一些代码来锁定结果工作表,但允许用户打开或关闭列组(以允许他们隐藏或取消隐藏每年的月份列)。我当前的代码运行良好,如下所示:
Sheet10.Protect Password:="password", UserInterfaceOnly:=True
Sheet10.EnableOutlining = True
Sheet11.Protect Password:="password", UserInterfaceOnly:=True
Sheet11.EnableOutlining = True
依此类推,再增加 4 张纸(并且有效)。
我想做的是,定义一个存储工作表标识符的变量并在真实代码上运行 For Each / Next 循环。
但是我无法使不会引发一些编译或运行时错误的变量声明起作用。
我最喜欢的建筑是
Dim wSheet as Worksheet
wSheet = Array(Sheet10, Sheet11, Sheet14)
For Each wSheet in Workbook
wSheet.Protect Password:="password", UserInterfaceOnly:=True
wSheet.EnableOutlining = True
Next wSheet
但它在我的设置 wSheet 时失败了......我尝试了几种变体,但它几乎总是在第二行失败(不管我是否使用工作表索引、工作表名称等)。有什么想法吗?