Здравствуйте. Есть следующий код. При нажатии на кнопку он копирует лист "Master", задает имя новому листу и должен запретить редактирование диапазона "I7:P7" в новом листе. А потом запоролить новый лист. Строка 10 (предпоследняя) почему то не работает. Я знаю что надо послать сюда фаил эксэль, но это часть большого кода. Спасибо
Код
Dim xNumber As Integer
On Error Resume Next
Application.ScreenUpdating = False
xNumber = ThisWorkbook.Worksheets.Count - 1
Worksheets("Master").Copy Before:=ActiveWorkbook.Sheets("Master")
ActiveSheet.Name = "Ticket " & xNumber
ActiveSheet.Range("I7:P7").Value = Worksheets("Ticket1").Range("I7:P7").Value
ActiveSheet.Activate
Application.ScreenUpdating = True
Worksheets(ActiveSheet.Name).Range("I7:P7").Locked = True
Worksheets(ActiveSheet.Name).Protect Password:=MyPassword, UserInterfaceOnly:=True
Наверное всё-таки нужно подумать о файле с примером. Я просто создал новый файл, обозвал один лист Master, снял защиту ячеек в диапазоне, и запустил макрос. Был создан новый лист на котором ячейки диапазона защищены.
ActiveSheet.Activate - что это и зачем? Зачем активировать и без того активный лист? И далее тоже идет небольшая чушь: Worksheets(ActiveSheet.Name) - это обращение к АКТИВНОМУ листу. Но он у Вас уже есть: ActiveSheet И самое главное - уберите On Error Resume Next. Тогда увидите ошибку, если она есть. Скорее всего проблема в том, что лист Master изначально защищен. Когда Вы его копируете, то защита остается и Вы пытаетесь изменить параметры ячеек(Locked). Попробуйте после строки