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

Blad beveiligen met macro

Status
Niet open voor verdere reacties.

Gielekes

Gebruiker
Lid geworden
4 sep 2017
Berichten
74
Ik heb een compleet blad dat ik nu wil beveiligen. Echter de macro's die achter een paar knoppen zitten, hebben betrekking op cellen die beveiligd zouden moeten worden. Iemand een oplossing?
 
Niet zo belangrijk: maar waarom wil je het doen?
Als je een beetje handig bent met Excel haal je het er in 30 seconden vanaf.. zonder een kraakprogramma...
 
Deze excelsheet bevat vrij veel formules en andere macros. Dit bestand moet beveiligd worden omdat dit op een gedeelde schijf komt te staan waar meerdere mensen deze sheet gaan gebruiken. Maar het is belangrijk dat ze de formules en waardes niet veranderen

Aanvullend:

Iedere keer als ik in een andere cel ga staan met de curser dan gaat het scherm knipperen. Ofja het blad herlaadt zichzelf
 
Laatst bewerkt:
Gielekes,

gebruik protect en unprotect.

Code:
  Activesheet.Unprotect Password:="password"

   'Hier je macro !

  Activesheet.Protect Password:="password"
 
Deze macro heb ik inderdaad momenteel in gebruik. Echter zie ik hier een kanttekening: Aangezien ik een macro heb waarbij het volgende gebeurt:
- als cel C7 verandert dan worden de Cellen C8:C10 gecleand. Door deze macro/en telkens als ik iets verander, knippert het scherm.

Aanvullend, telkens als ik ergens met mijn curser ga staan gaat het blad zich herladen. Dit komt waarschijnlijk omdat ik code heb staan bij de macro voor als er iets wijzigt in het blad.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect Password:="ww"
    Sheets("opzet").Unprotect Password:="ww"

If Target.Address = Range("invoer!B3").Address Then
Range("invoer!B4:invoer!B8").Value = ""
Range("invoer!E6:invoer!E8").Value = ""
Range("invoer!H4:invoer!H9").Value = ""
End If

If Target.Address = Range("invoer!B12").Address Then
Range("invoer!B13:invoer!B17").Value = ""
Range("invoer!E15:invoer!E17").Value = ""
Range("invoer!H13:invoer!H18").Value = ""
End If

If Target.Address = Range("invoer!B21").Address Then
Range("invoer!B22:invoer!B26").Value = ""
Range("invoer!E24:invoer!E26").Value = ""
Range("invoer!H22:invoer!H27").Value = ""
End If

If Target.Address = Range("invoer!B30").Address Then
Range("invoer!B31:invoer!B35").Value = ""
Range("invoer!E33:invoer!E35").Value = ""
Range("invoer!H31:invoer!H36").Value = ""
End If

If Target.Address = Range("invoer!B39").Address Then
Range("invoer!B40:invoer!B44").Value = ""
Range("invoer!E42:invoer!E44").Value = ""
Range("invoer!H40:invoer!H45").Value = ""
End If

If Target.Address = Range("invoer!B48").Address Then
Range("invoer!B49:invoer!B53").Value = ""
Range("invoer!E51:invoer!E53").Value = ""
Range("invoer!H49:invoer!H54").Value = ""
End If

If Target.Address = Range("invoer!B57").Address Then
Range("invoer!B58:invoer!B62").Value = ""
Range("invoer!E60:invoer!E62").Value = ""
Range("invoer!H58:invoer!H63").Value = ""
End If

If Target.Address = Range("invoer!B66").Address Then
Range("invoer!B67:invoer!B71").Value = ""
Range("invoer!E69:invoer!E71").Value = ""
Range("invoer!H67:invoer!H72").Value = ""
End If

If Target.Address = Range("invoer!B75").Address Then
Range("invoer!B76:invoer!B80").Value = ""
Range("invoer!E78:invoer!E80").Value = ""
Range("invoer!H76:invoer!H81").Value = ""
End If

If Target.Address = Range("invoer!B84").Address Then
Range("invoer!B85:invoer!B89").Value = ""
Range("invoer!E87:invoer!E89").Value = ""
Range("invoer!H85:invoer!H90").Value = ""
End If

If Target.Address = Range("invoer!B93").Address Then
Range("invoer!B94:invoer!B98").Value = ""
Range("invoer!E96:invoer!E98").Value = ""
Range("invoer!H94:invoer!H99").Value = ""
End If

If Target.Address = Range("invoer!B102").Address Then
Range("invoer!B103:invoer!B107").Value = ""
Range("invoer!E105:invoer!E107").Value = ""
Range("invoer!H103:invoer!H108").Value = ""
End If

If Target.Address = Range("invoer!B111").Address Then
Range("invoer!B112:invoer!B116").Value = ""
Range("invoer!E114:invoer!E116").Value = ""
Range("invoer!H112:invoer!H117").Value = ""
End If

If Target.Address = Range("invoer!B120").Address Then
Range("invoer!B121:invoer!B125").Value = ""
Range("invoer!E123:invoer!E125").Value = ""
Range("invoer!H121:invoer!H124").Value = ""
End If

If Target.Address = Range("invoer!B129").Address Then
Range("invoer!B130:invoer!B134").Value = ""
Range("invoer!E132:invoer!E134").Value = ""
Range("invoer!H130:invoer!H133").Value = ""
End If

    ActiveSheet.Protect Password:="ww"
    Sheets("opzet").Protect Password:="ww"
End Sub
 
Laatst bewerkt:
Plaats deze (volledige) macro dan even op het forum.


nav je aanvulling: je hebt waarschijnlijk een :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
Laatst bewerkt:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect Password:="ww"
    Sheets("opzet").Unprotect Password:="ww"

If Target.Address = Range("invoer!B3").Address Then
Range("invoer!B4:invoer!B8").Value = ""
Range("invoer!E6:invoer!E8").Value = ""
Range("invoer!H4:invoer!H9").Value = ""
End If

If Target.Address = Range("invoer!B12").Address Then
Range("invoer!B13:invoer!B17").Value = ""
Range("invoer!E15:invoer!E17").Value = ""
Range("invoer!H13:invoer!H18").Value = ""
End If

If Target.Address = Range("invoer!B21").Address Then
Range("invoer!B22:invoer!B26").Value = ""
Range("invoer!E24:invoer!E26").Value = ""
Range("invoer!H22:invoer!H27").Value = ""
End If

If Target.Address = Range("invoer!B30").Address Then
Range("invoer!B31:invoer!B35").Value = ""
Range("invoer!E33:invoer!E35").Value = ""
Range("invoer!H31:invoer!H36").Value = ""
End If

If Target.Address = Range("invoer!B39").Address Then
Range("invoer!B40:invoer!B44").Value = ""
Range("invoer!E42:invoer!E44").Value = ""
Range("invoer!H40:invoer!H45").Value = ""
End If

If Target.Address = Range("invoer!B48").Address Then
Range("invoer!B49:invoer!B53").Value = ""
Range("invoer!E51:invoer!E53").Value = ""
Range("invoer!H49:invoer!H54").Value = ""
End If

If Target.Address = Range("invoer!B57").Address Then
Range("invoer!B58:invoer!B62").Value = ""
Range("invoer!E60:invoer!E62").Value = ""
Range("invoer!H58:invoer!H63").Value = ""
End If

If Target.Address = Range("invoer!B66").Address Then
Range("invoer!B67:invoer!B71").Value = ""
Range("invoer!E69:invoer!E71").Value = ""
Range("invoer!H67:invoer!H72").Value = ""
End If

If Target.Address = Range("invoer!B75").Address Then
Range("invoer!B76:invoer!B80").Value = ""
Range("invoer!E78:invoer!E80").Value = ""
Range("invoer!H76:invoer!H81").Value = ""
End If

If Target.Address = Range("invoer!B84").Address Then
Range("invoer!B85:invoer!B89").Value = ""
Range("invoer!E87:invoer!E89").Value = ""
Range("invoer!H85:invoer!H90").Value = ""
End If

If Target.Address = Range("invoer!B93").Address Then
Range("invoer!B94:invoer!B98").Value = ""
Range("invoer!E96:invoer!E98").Value = ""
Range("invoer!H94:invoer!H99").Value = ""
End If

If Target.Address = Range("invoer!B102").Address Then
Range("invoer!B103:invoer!B107").Value = ""
Range("invoer!E105:invoer!E107").Value = ""
Range("invoer!H103:invoer!H108").Value = ""
End If

If Target.Address = Range("invoer!B111").Address Then
Range("invoer!B112:invoer!B116").Value = ""
Range("invoer!E114:invoer!E116").Value = ""
Range("invoer!H112:invoer!H117").Value = ""
End If

If Target.Address = Range("invoer!B120").Address Then
Range("invoer!B121:invoer!B125").Value = ""
Range("invoer!E123:invoer!E125").Value = ""
Range("invoer!H121:invoer!H124").Value = ""
End If

If Target.Address = Range("invoer!B129").Address Then
Range("invoer!B130:invoer!B134").Value = ""
Range("invoer!E132:invoer!E134").Value = ""
Range("invoer!H130:invoer!H133").Value = ""
End If

    ActiveSheet.Protect Password:="ww"
    Sheets("opzet").Protect Password:="ww"
End Sub
 
Laatst bewerkt:
bij elke beweging zal je macro de beveiliging opheffen en vervolgens weer beveligen.
 
Ik heb deze code er al tussenuit gehaald. Deze kan ook verandert worden in:
Als deze cellen veranderen: B3, B12, B21, B30, B39, B48, B57, B66, B75, B84, B93, B102, B111, B120, B129

Maar daar ben ik zelf niet handig genoeg voor
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3, B12, B21, B30, B39, B48, B57, B66, B75, B84, B93, B102, B111, B120, B129")) Is Nothing Then
    With Target
        .Offset(0, 1).Resize(1, 5).Value = ""
        .Offset(3, 3).Resize(1, 3).Value = ""
        .Offset(1, 6).Resize(1, 5).Value = ""
    End With
End If
End Sub

Is dit iets?
 
Ik krijg niet goed achterhaalt hoe deze code precies werkt maar telkens als
bijv B3 wordt verandert in een andere waarde dan moeten de 7 cellen eronder opgeschoond worden. Dit geld dus ook voor de andere
dus B4-B10
enz.
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3, B12, B21, B30, B39, B48, B57, B66, B75, B84, B93, B102, B111, B120, B129")) Is Nothing Then
    With Target
        .Offset(0, 1).Resize(1, 7).Value = ""
        .Offset(3, 3).Resize(1, 3).Value = ""
        .Offset(1, 6).Resize(1, 5).Value = ""
    End With
End If
End Sub


test eens of dit werkt voor je. Plaats anders een voorbeeldbestand
 
Bekijk bijlage sample.xlsm

Dit is het bestand waarin ik werk
Het gaat erom dat de 7 velden onder de positiekeuze gecleand worden en tevens ook drie velden in het rechterblok. Het gaat hier om de 4e 5e 6e vak in kolom E per blok. Dus voor pos7 is dit bijv E60, E61, E62.
 
excuus, aan het einde van een werkweek lukt het begrijpend lezen soms niet meer.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3, B12, B21, B30, B39, B48, B57, B66, B75, B84, B93, B102, B111, B120, B129")) Is Nothing Then
    With Target
        .Offset(1, 0).Resize(5, 1).Value = ""
        .Offset(3, 3).Resize(3, 1).Value = ""
        .Offset(1, 6).Resize(5, 1).Value = ""
    End With
End If

deze dan?
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan