Я знаю, что есть много вопросов по этому вопросу, которые я прочитал, но, похоже, ни один из них не дает мне код, необходимый для этой работы.
У меня есть несколько кнопок, которые я поместил на ленте моего листа Excel. Они прикреплены к макросам, которые копируют листы на другой лист, например
Макрос запускается нажатием кнопки:
Sub btnSheet1_onAction(control As IRibbonControl)
mFunction.CopySheet1toSheet2
End Sub
Макрос содержится в моем модуле mFunction как:
Public Sub CopySheet1toSheet2()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
ws.Cells.Copy Destination:=ThisWorkbook.Sheets(2).Cells
End Sub
Теперь .... Мне нужно защитить элементы / ячейки на листах 1 и 2. Когда я защищаю листы, макросы приводят к аварийному завершению Excel - без ошибок времени выполнения или чего-либо еще.
Я вставил следующий код в 'ThisWorkbook'
Private Sub Workbook_Open()
Sheets(1).Protect Password:="secret", UserInterFaceOnly:=True
Sheets(2).Protect Password:="secret", UserInterFaceOnly:=True
End Sub
Но это все равно не работает - я также попытался использовать следующий код в модуле mFunction
Public Sub CopySheet1toSheet2()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
ws.Unprotect Password = "secret"
ws.Cells.Copy Destination:=ThisWorkbook.Sheets(2).Cells
ws.Protect Password = "secret"
End Sub
Но, похоже, это тоже не работает - я полагаю, это может быть связано с тем, что макрос копирует лист на другой лист, который также заблокирован?
Следует также отметить, что в рабочей книге есть другие листы, которые защищены, но к которым не прикреплены макросы, поэтому они остаются защищенными. Может ли это быть причиной проблемы?
Некоторая помощь будет принята с благодарностью !!