Страницы: 1
RSS
Группировка при защищённом листе
 
В книге присутствуют нестандартно про именованные листы ,в которых присутствует соответственно группировка строк/столбцов .    
Как снять запрет с группировки на одном листе я разобрался :  
Private Sub Workbook_Open()  
   Sheets("Лист1").EnableOutlining = True '  
   Sheets("Лист1").Protect Contents:=True, userInterfaceOnly:=True  
End Sub  
Вопрос : Как Сие продлить на остальные листы или применить к всей книге?  
Пытался методом научного тыка (так - как не силён в макросах и т.п.)  
Private Sub Workbook_Open()  
   Sheets("Лист1").EnableOutlining = True ' Подставьте ссылку на нужный лист  
   Sheets("Лист1").Protect Contents:=True, userInterfaceOnly:=True  
End Sub  
-----------------------------------------------------------------------------------  
Private Sub Workbook_Open()  
   Sheets("Лист2").EnableOutlining = True ' Подставьте ссылку на нужный лист  
   Sheets("Лист2").Protect Contents:=True, userInterfaceOnly:=True  
End Sub  
так не работает . Подскажите/поделитесь мудростью как исправить положение .Заранее  
благодарю .
 
Sub tt()  
   Dim wSh As Worksheet  
   For Each wSh In Sheets  
       wSh.EnableOutlining = True    '  
       wSh.Protect Contents:=True, userInterfaceOnly:=True  
   Next  
End Sub
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Почитайте здесь:  http://www.excel-vba.ru/chto-umeet-excel/kak-ostavit-vozmozhnost-rabotat-so-strukturoj-na-zashhishhennom-liste/ А вообще - нужно перебирать листы в цикле.
 
Код, приведенный ниже, нужно поместить в модуль ЭтаКнига:  
 
Private Sub Workbook_Open()  
 Dim Sh As Worksheet  
 For Each Sh In Me.Worksheets  
   Sh.Protect UserInterfaceOnly:=True  
   Sh.EnableOutlining = True  
 Next  
End Sub  
 
Особенности:    
 
1. Код сработает, даже если книга была сохранена с паролем  
Вариант, когда сначала идет .EnableOutlining = True , а потом .Protect при этом сбойнет.  
 
2. Снятие защиты (для пользователя) не происходит ни на миг, т.е. останов по ESC или Ctrl-Break в момент, когда защита снята, не происходит, пусть даже этот момент и кратковременный. Дополнительная блокировка прерывания кода с помощью Application.EnableCancelKey = xlDisabled/xlErrorHandler для приведенного варианта не требуется.  
 
3. Обрабатываются только Worksheets, а не все Sheets.  
Вариант с Sheets на листах диаграммы, например, без дополнительного On Error Resume Next сбойнет, случай редкий, но возможный, лучше не попадаться.
Страницы: 1
Читают тему
Loading...