om du spelar in ett makro så ser du att koden för att låsa upp är:
Sheets("2022").Unprotect
Då kan du klistra ihop det med värdet från en cell. typ
FlikAttLåsaUpp = CStr(Sheets("blad1").Range("a1").Value)
Sheets(FlikAttLåsaUpp).Unprotect
Där Csrt konverterar siffor (2022) till en textsträng. Annars kommer Excel att leta efter blad nr 2022
Om det namngivna område heter "ValdFlik" så skulle den här raden göra hela jobbet.
Sheets(CStr(Range("ValdFlik").Value)).Unprotect
Men, Eftersom duinte är bekant med kommandona så bör du dela up det på flera rader och skriva kommentarer
För att låsa kan du göra någonting i den här stilen
Sheets(CStr(Range("ValdFlik").Value)).Protect _
DrawingObjects:=True, Contents:=True, Scenarios:=True
Om du vill låsa upp så fort du ändrar värdet i ValdFlik så måste du köra händelsehantering och då kan det bli lite småskumt.
Högerklicka på fliknamnet där du ändrar vald flik etc och välj "visa kod" och klistra in någonting i den här stilen
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> Range("ValdFlik").Address Then Exit Sub
Sheets(CStr(Range("ValdFlik").Value)).Unprotect
End Sub
Eller den här - som du får i hemläxa att lista ut vad den gör
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
If Target.Address <> Range("ValdFlik").Address Then Exit Sub
For i = 2 To Sheets.Count
Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Next i
Sheets(CStr(Range("ValdFlik").Value)).Unprotect
End Sub