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

Opgelost Cel blokkeren op basis van voorwaarden andere cel

Dit topic is als opgelost gemarkeerd

PietPeter

Gebruiker
Lid geworden
20 dec 2024
Berichten
7
Goedendag,

Ik zou graag een VBA-code willen schrijven die een cel blokkeert wanneer de waarde in een cel in de rij daaronder een '1' bevat.

Bijgevoegd een voorbeeld document waarin getallen worden ingevoerd in rij 2, maar wanneer in rij 4 een '1' komt te staan dan dient de cel daarboven van rij 2 te worden geblokkeerd.

In het bijgevoegd document dienen B2, C2 en D2 dus op geblokkeerd te komen te staan en E2 en F2 niet.

Is dit mogelijk?

Alvast bedankt!

Met vriendelijke groet,
Piet Peter
 

Bijlagen

Allereerst bedankt, hiermee ben ik een heel stuk op weg geholpen.

Voor de sheet waarop dit uiteindelijk wordt toegepast is de invoer van '1' of '0' gebaseerd op een formule. Ik heb daarom 'Private Sub Worksheet_Change(ByVal Target As Range)' vervangen door 'Private Sub Worksheet_Calculate()' en dat werkt.

De huidige code (voortbordurend op de code van @emields ) ziet er als volgt uit waarbij een wijziging naar '0' ook direct de cel weer doet deblokkeren:
Code:
Private Sub Worksheet_Calculate()
    Dim cel As Range
    ' Controleer of de cellen in rij 4 (B4:F4) gewijzigd zijn
    For Each cel In Me.Range("B4:F4")
        ' Als de waarde van de cel in rij 4 een 1 is, blokkeer de corresponderende cellen in rij 2
        If cel.Value = 1 Then
            Me.Unprotect
            ' Blokkeer de cel in rij 4
            cel.Offset(-2).Locked = True
        ' Als de waarde van de cel in rij 4 een 0 is, deblokkeer de corresponderende cellen in rij 2
        ElseIf cel.Value = 0 Then
            Me.Unprotect
            ' Deblokkeer de cel in rij 4
            cel.Offset(-2).Locked = False
        End If
    Next cel

    ' Bescherm het werkblad opnieuw nadat de wijzigingen zijn doorgevoerd
    Me.Protect
End Sub

Bijgevoegd ook de code in het document.

Ik loop alleen nog tegen één ding aan en dat is dat het werkblad op deze manier wordt beveiligd met alleen de standaard vinkjes van 'Vergrendelde cellen selecteren' en 'Ontgrendelde cellen selecteren'. Vanwege de toepassingen in mijn sheet dienen hierbij ook de vinkjes 'Kolommen opmaken', 'Objecten bewerken' en 'Scenario's bewerken' te worden aangevinkt.

Is dit op te vangen in een VBA-code of is dit wellicht als 'standaard' te wijzigen binnen dit Excel-document?
 

Bijlagen

Code:
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingColumns:=True

Tip:
Neem eens een macro op.
 
Vertel eerst eens wat de bedoeling van deze excercitie is ?
Wat moet dit opleveren en wat gaat er mis zonder deze 'beveiligign'?
 
Bedankt AHulpje, daarmee is het gelukt. Ik was al te moeilijk aan het denken maar met een simpele Macro opnemen had ik hier inderdaad ook zelf op kunnen komen.

Iedereen bedankt voor de hulp. Hier gaat een slotje op.
 
Terug
Bovenaan Onderaan