Этот код защищает все листы, кроме одного. Это работает, если рабочие листы защищены, но выдает сообщение об ошибке, когда они не защищены.
ws - это рабочий лист, на котором включена кнопка.
wsheet предназначен для защиты всех листов. кроме этого одного листа. По сути, когда пользователь нажимает кнопку рабочего листа, я хочу, чтобы были защищены все рабочие листы (включая тот, на котором кнопка), кроме рабочего листа с именем «Сверхурочные». Когда они нажимают на нее снова, она снимает защиту со всех рабочих листов.
Dim wSheet As Worksheet
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ThisWorkbook
Set ws = wb.Sheets(1)
Application.ScreenUpdating = False
For Each wSheet In Worksheets
If wSheet.Name = "Overtime" Then
wSheet.Unprotect Password:="12345"
ws.Shapes("Rectangle_LOCK").TextFrame.Characters.Text = "Vérouiller" 'THIS IS WHERE IT GIVES ME THE ERROR
ElseIf wSheet.ProtectContents = True Then
wSheet.Unprotect Password:="12345"
ws.Shapes("Rectangle_LOCK").TextFrame.Characters.Text = "Vérouiller"
Else
wSheet.Unprotect Password:="12345"
ws.Shapes("Rectangle_LOCK").TextFrame.Characters.Text = "Déverouiller"
wSheet.Protect Password:="12345"
End If
Next wSheet
Application.ScreenUpdating = True