• 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.

aanpassen geblokkeerde cel dmv VBA op een beveiligde sheet

Status
Niet open voor verdere reacties.

ericabt

Gebruiker
Lid geworden
9 nov 2008
Berichten
104
beste excellers/VBA-ers,

Ik heb een beveiligde sheet (dat moet ook zo blijven), waarop ik dmv VBA een cel onder een bepaalde voorwaarde locked of unlocked wil hebben.

Nu heb ik op internet gespeurd en wat gevonden en er een testje mee gemaakt dat werkt.
Ga ik dat toepassen in mijn andere bestand, doet hij het niet meer. Waar gaat het fout?

Ik heb een excel bijgevoegd. Op tab "2" heb ik mijn oefening geplaatst. Deze werkt.

Op tab "b102" de uiteindelijke sheet. Ik heb eea weggegooid, dus het ziet er nu wat rommelig uit, maar de essentie staat er.
Als cel G7 = "vloer" dan moet G8 gelocked worden. Zo niet dan moet deze unlocked blijven.

Voor beide heb ik tijdelijk het password op "test" gezet.

Suggesties voor een andere, betere, makkelijkere oplossing zijn ook welkom.

alvast bedankt.
Bekijk bijlage test.xlsm
 
Beste ericabt,

Met mijn zeer beperkte VBA-kennis kom ik uit op de volgende code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Unprotect password:="test"
If Range("b102_TypeConstructie") = "vloer" Then
Range("b102_berekeningstype").Locked = True
Else
Range("b102_berekeningstype").Locked = False
End If
Protect password:="test"
End Sub

Volgens mij moet dat werken.

Grt Peter
 
Iets korter...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "test"   ' < --- regel kan eruit na 1e run.
[G8].Locked = [G7].Value = "vloer"
ActiveSheet.Protect "test", , , , True ' < --- regel kan eruit na 1e run.

End Sub

Met UserInterfaceOnly = True hoef je niet steeds de beveiliging van het werkblad eraf te halen.

Met vriendelijke groet,


Roncancio
 
bedankt voor de reacties,

Ik ben nog even door gaan zoeken op de userinterfaceonly en kwam deze code tegen. Die werkt prima, maar kleven daar nog risico's aan mbt beveiliging.

Code:
Private Sub Workbook_Open()

Dim wSheet As Worksheet



	For Each wSheet In Worksheets

		wSheet.Protect Password:="Secret", _
		UserInterFaceOnly:=True


Next wSheet


End Sub
 
Niet meer/minder dan zonder UserInterfaceOnly.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan