Excel VBA:允许用户单击“+”以在多个受保护的工作表上进行分组/取消分组

时间:2016-02-18 15:13:06

标签: arrays excel vba excel-vba

我找到了一个Excel VBA解决方案,允许用户展开/折叠分组的行和列,同时保持工作表受到保护,此处:http://www.mrexcel.com/forum/excel-questions/711327-allow-users-click-group-ungroup-protected-sheet-visual-basic-applications.html

对于单个工作表,我的代码如下所示:

Private Sub Workbook_Open()
    With Worksheets("Master data")
        .Protect Password:="", UserInterfaceOnly:=True
        .EnableOutlining = True
    End With
End Sub

注意:我将工作表的密码留空(字符串:“”)

但是,我需要允许用户在另一个名为“CPM”的工作表上执行相同的操作。为了实现这一点,我提出了以下代码:

Private Sub Workbook_Open()
    Dim sheetsArray As Sheets
    Set sheetsArray = ActiveWorkbook.Sheets(Array("Master data", "CPM"))

    Dim sheetObject As Worksheet

    For Each sheetObject In sheetsArray
    With Worksheets(sheetObject)
        .Protect Password:="", UserInterfaceOnly:=True
        .EnableOutlining = True
    End With
    Next sheetObject
End Sub

该行

With Worksheets(sheetObject)

导致na错误(Excel表示类型不匹配:我想Excel在这里需要一个字符串)。

有解决此问题的快速解决方法吗?

亲切的问候,

丹尼斯

1 个答案:

答案 0 :(得分:0)

使用

With sheetObject

而不是

With Worksheets(sheetObject)