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

cellen blokkeren tegen overschrijven bij waarde in andere cel

Status
Niet open voor verdere reacties.

tkint

Gebruiker
Lid geworden
5 dec 2011
Berichten
754
Beste,

In het document in bijlage wil ik verhinderen dat de kolommen F tot H ingevuld worden indien er geen "x" in kolom C wordt ingevuld. Mijn macro doet niet wat ik verlang.
Wat doe ik fout?
 

Bijlagen

  • risico-analyse_versie5.xlsm
    29,2 KB · Weergaven: 77
Je kan maar één Private Sub Worksheet_Change gebruiken. De code zal je dus moeten combineren (zonder te zien wat de code moet gaan doen)
 
Als ik je uitleg goed begrijp dan is de volgende code toch voldoende?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="geen" 'Beveiliging uitzetten
rij = Target.Row
kolom = Target.Column

If kolom = 3 And Target.Value = "x" Then
    Range(Cells(rij, kolom + 3), Cells(rij, kolom + 6)).Locked = False
Else
    Range(Cells(rij, kolom + 3), Cells(rij, kolom + 6)).Locked = True
End If
ActiveSheet.Protect Password:="geen" 'Beveiliging aanzetten
End Sub
 
Je kunt trouwens ook zorgen dat je worksheet is beveiligd maar je wel code kunt laten uitvoeren zonder steeds het password eraf te halen en er weer terug op te zetten door in ThisWorkbook de volgende code te plaatsen:
Code:
Private Sub Workbook_Open()
    Sheets(1).Protect Password:="geen", UserInterFaceOnly:=True
End Sub
 
Beste,

Ik pas jouw macro's toe en breng straks verslag uit.
 
Als alternatief
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("C13:C91")) Is Nothing Then Exit Sub
  ActiveSheet.Unprotect "geen"
  Target.Offset(, 3).Resize(, 3).Locked = Target <> "x"
  ActiveSheet.Protect "geen"
End Sub
 
Hoe kan de 'change'-gebeurtenis geaktiveerd worden op een beveiligd blad ?
 
Beste forumleden,

Bedankt voor de vele info. Ik denk aan de volgende methode : je zorgt dat de kolommen F tot H standaard beveiligd zijn tegen overschrijven d.m.v. bladbeveiliging en de kolom C niet. Bij het invullen van een "x" in kolom C worden de cellen F tot H op die rij vrijgegeven. Klikt men op een andere cel in kolom C voor een nieuwe invoer worden de ingevulde cellen van de vorige actie beveiligd.
Dat lukt mij dus niet.
 
Dan zou ik de volgende code gebruiken (de slimme intersect even overgenomen van VenA)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
rij = Target.Row
kolom = Target.Column

If Intersect(Target, Range("F13:H91")) Is Nothing Then Exit Sub

    If Cells(rij, 3).Value = "x" Then
        Range(Cells(rij, 6), Cells(rij, 8)).Locked = False
    Else
        Range(Cells(rij, 6), Cells(rij, 8)).Locked = True
    End If


End Sub
 
Laatst bewerkt:
Dat kan slimmer:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If not Intersect(Target, Range("F13:H91")) Is Nothing Then cells(target.row,6).resize(,3).Locked = cells(target.row,3)="x"
End Sub
 
Ik begrijp 'm zelfs. Nu nog zelf leren verzinnen ... Dank je wel snb. Over naar de TS
 
Beste forumleden,

Ik beschik momenteel niet over een PC met Microsoft Office. Ik pas de code asap op mijn vertrouwde laptop toe en breng verslag uit.
Bedankt Peter B, Snb en VenA.
 
Volgens mij gaan de codes in #9 en #10 van de verkeerde Intersect range uit. Ook is het gebruik van = "x" en <> "x" tegenstrijdig. Dus je hebt nog wat uit te proberen:d
 
Volgens mij gaat het met mijn code goed. Het gaat er nl. om dat de velden in de kolommen 6-8 worden gelocked als er in kolom 3 geen "x" staat. En het gaat om het event SelectionChange, dus niet meer bij het plaatsen van de "x" maar bij het selecteren van één van de cellen uit de range wordt gekeken of de "x" aanwezig is. Zo ja, wijzigen toegestaan. Zo niet locken.

Dat zou dan denk ik betekenen dat in de code van snb de controle "<>x" moet zijn.
 
Laatst bewerkt:
Klopt waarschijnlijk. Ik had niet gezien dat er van Change naar SelectionChange is over gegaan:confused:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan