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)

не вызывает ошибку (Excel указывает, что типы не совпадают: я полагаю, что Excel требует здесь строку).

Есть ли быстрое решение, чтобы решить эту проблему?

С уважением,

Деннис


person Dennis    schedule 18.02.2016    source источник
comment
Это работает блестяще. Спасибо!   -  person Dennis    schedule 18.02.2016


Ответы (1)


Использовать

With sheetObject

вместо

With Worksheets(sheetObject)
person Ralph    schedule 18.02.2016