• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA lock en Unlock cel obv cel waarde

Status
Niet open voor verdere reacties.

swientjes

Gebruiker
Lid geworden
7 aug 2018
Berichten
12
Goedenavond

Graag wil ik dat een range met cellen toegankelijk of niet toegankelijk is op basis van een waarde in een cel.
Die waarde staat bij mij in sheet die sheet A heet: cell Y6 en is "Open Cells"of "Locked"

Als er locked staat wil ik dat de range in de sheet K39:V39 niet gewijzigd, geselecteerd of wat dan ook kan worden en dus ander volledig bewerkt en gevuld kan worden.

nu gebruik ik de volgende code, maar op een of andere manier blijven de cellen toegankelijk. Kan iemand helpen wat ik hier over het hoofd zie?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("Y6") = "Open Cells" Then
        Sheets ("A").Range("K39:V39").Locked = False
    ElseIf Range("Y6") = "Locked" Then
        Sheets ("A").Range("K39:V39").Locked = True
    End If
End Sub
]


bij voorbaat dank
 
Je moet het blad wel beveiligen met 'protect'.
 
De locked cellen zijn pas ontoegankelijk als je het blad beveiligd.
 
ik heb het blad beveiligd, ik krijg echter een runtime error

"Unable to set the Locked property of the Range Class"

:confused::eek:
 
Protect doe je voor een blad, niet voor een range.
Hou er rekening mee dat je controle op Y6 case sensitive is. Zo niet:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect
    Select Case LCase(Range("Y6"))
        Case "locked":      Sheets("A").Range("K39:V39").Locked = True
        Case "open cells":  Sheets("A").Range("K39:V39").Locked = False
    End Select
    Range("Y6").Locked = False
    ActiveSheet.Protect
End Sub
 
Als er maar twee mogelijkheden zijn.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 with sheets("A")
   .unprotect
   .Range("K39:V39").Locked =iIf(Range("Y6")= "Open Cells",0,-1)
   .protect
 end with
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan