Я нашел решение 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 требует здесь строку).
Есть ли быстрое решение, чтобы решить эту проблему?
С уважением,
Деннис