Код ниже активируется активной кнопкой x. Код снимет защиту с активной рабочей книги и рабочего листа, сделает копию активного рабочего листа, поместит вкладку этого нового листа туда, где я хочу ее разместить, защитит новый рабочий лист и защитит рабочую книгу. Не удается защитить исходный рабочий лист, из которого была сделана копия. Мне нужен код для защиты паролем последнего активного листа (исходный лист, из которого была сделана копия). Любая помощь приветствуется.
Private Sub CommandButton13_Click()
ThisWorkbook.Unprotect Password: = "Password1"
ActiveSheet.Unprotect Password: = "Password2"
Dim i As Long, s As String, s2 As String
s = "NEW WONDERFUL WORKSHEET"
s2 = s
ActiveSheet.Copy After:=Sheets(2)
Do While WorksheetExists(s2)
i = i + 1
s2 = s & " " & i
Loop
ActiveSheet.Name = s2
ActiveSheet.Protect Password: = "Password2"
ThisWorkbook.Protect Password: = "Password1"
End Sub


Я бы немного реорганизовал код. Во-первых, давайте найдем доступное имя листа s2до, сняв защиту. Кроме того, я предполагаю, что код находится в объектном модуле рабочего листа, и в тот момент, когда мы нажимаем на кнопку, лист с этой самой кнопкой является фактически активным листом, поэтому мы можем называть его Me вместо ActiveSheet. Что касается паролей, давайте поместим их как константы в начале, чтобы их было легче изменить в случае необходимости.
Private Sub CommandButton13_Click()
Const BookPass = "Password1"
Const SheetPass = "Password2"
Dim i As Long, s As String, s2 As String
s = "NEW WONDERFUL WORKSHEET"
s2 = s
Do While WorksheetExists(s2)
i = i + 1
s2 = s & " " & i
Loop
ThisWorkbook.Unprotect BookPass
With Me
.Unprotect SheetPass
.Copy After:=Sheets(2)
With ActiveSheet
.Name = s2
.Protect SheetPass
End With
.Protect SheetPass
End With
ThisWorkbook.Protect BookPass
End Sub