Excel: Позволяет группировать / намечать на нескольких листах с защитой на

Я пытаюсь разрешить группирование / выделение на нескольких листах с включенной защитой. По какой-то причине в Excel нет простой опции, чтобы сделать это при защите, поэтому я использую этот макрос:

Sub group()
ActiveSheet.EnableOutlining = True'
ActiveSheet.Protect Contents:=True, UserInterfaceOnly:=True
End Sub

Я установил его как макрос автозапуска, когда рабочая книга открыта. У меня проблема в том, что я хочу, чтобы она применялась ко всем листам, а не только к активным. Приведенный выше код работает на активном листе, но мне все равно придется вручную запускать макрос на других листах, чтобы обеспечить работу контура.

Мне также нужна некоторая гибкость в том, что иногда листы будут добавляться или удаляться, и я хочу, чтобы код был гибким, чтобы он всегда влиял на все листы, и мне не приходилось называть каждый лист в коде.

Это возможно?

Спасибо.

2 ответа

Может быть:

Option Explicit
Sub group()
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
    With ws
        .Protect Contents:=True, UserInterfaceOnly:=True
        .EnableOutlining = True 'add after adding protection to the sheet
    End With
Next ws 'you need the next rule for the "For" routine.
End Sub

Привет Пол

Я думаю, что это то, что вы хотите:

Option Explicit
Sub group()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
    With ws
        .EnableOutlining = True '
        .Protect Contents:=True, UserInterfaceOnly:=True
    End With
End Sub
Другие вопросы по тегам