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

Bladbeveiliging uit en daarna weer aanzetten met macro

Status
Niet open voor verdere reacties.

Konmic

Gebruiker
Lid geworden
1 jun 2016
Berichten
9
hallo,

Ik ben net begonnen met macro's en heb er dan ook totaal GEEN ervaring mee. Wel heb ik wat tutorials gekeken via youtube, maar alsnog kom ik er niet uit.

Het is de bedoeling dat, als ik in Excel op ctrl+q druk, de macro gaat lopen die het volgende voor elkaar krijgt.
- In cel B13 moet het getal “999” komen te staan;
- De cellen C13, E13, F13, H13 & I13 worden geselecteerd;
- De bladbeveiliging wordt weggehaald;
- Bij de geselecteerde cellen wordt het vinkje “Geblokkeerd” (in Celeigenschappen bij Bescherming) uitgevinkt;
- De bladbeveiliging wordt weer teruggezet.
Nu had ik gehoopt dat de onderstaande macro dit voor elkaar zou krijgen, maar helaas, lukt het mij niet.
Wat doe ik fout? :confused:
--------------------------------------------------------------------------------------------------------------------------------------
De macro:
Sub CellenOpenen()
'
' CellenOpenen Macro
' Deze macro zorgt ervoor dat je handmatig gegevens kan invoeren.
'
' Sneltoets: Ctrl+q
'
ActiveCell.FormulaR1C1 = "999"
ActiveCell.Offset(0, 1).Range("A1,C1,D1").Select
ActiveCell.Offset(0, 4).Range("A1").Activate
ActiveWindow.SmallScroll ToRight:=5
ActiveCell.Offset(0, -3).Range("A1,C1,D1,F1,G1").Select
ActiveCell.Offset(0, 3).Range("A1").Activate
ActiveSheet.Unprotect
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
--------------------------------------------------------------------------------------------------------------------------------------
 
Probeer het eens op deze manier;

Code:
Sub CellenOpenen()
ActiveSheet.Unprotect
Range("B13").Value = 999

Range("C13,E13,F13,H13,I13").Select
Selection.Locked = False
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
 
Zoiets had ik ook in gedachten. Persoonlijk ben ik niet zo'n voorstander van shortcuts voor macro's, omdat die vaak al een standaardfunctie hebben.
In dit geval is de standaardfunctie voor Ctrl-q het oproepen van de data analyse popup (als je cellen met getallen hebt geselecteerd).

Mijns inziens is het veiliger om Ctrl-Shift shortcuts te gebruiken voor macro's, i.c. Ctrl-Shift-q.
 
Hallo,

Aanstaande maandag ben ik weer op mijn werk (waar ik met macro's aan het stoeien ben). Dan zal ik uw oplossing gaan proberen en laat ik hier weten of het werkt.
Alvast hartelijk dank voor voor de reactie.

Met vriendelijke groet,

Konmic
 
Ik heb net de bovenstaande macro in mijn bestand gezet en ik heb er 2 vragen over.

Na het invoeren van deze macro en activeren, moest ik het wachtwoord van de bladbeveiliging opgeven.
Vervolgens heeft de marco precies gedaan wat hij moest doen, maar vervolgens moet hij ook de bladbeveiliging weer aanzetten en dat doet hij niet.

Is het mogelijk dat het wachtwoord NIET ingevoerd hoeft te worden en;
Is het mogelijk dat de bladbeveiliging door deze macro ook weer aangezet wordt?

Met vriendelijke groet,

Konmic
 
Konmic,

de beveiliging wordt uitgezet met:
Code:
ActiveSheet.Unprotect "wachtwoord"
en kan weer aangezet worden met
Code:
ActiveSheet.Protect "wachtwoord"
 
Kun je niet beter gebruik maken van de optie "UserInterfaceOnly" bij het beveiligen? Daarmee is je werkblad beveiligd tegen handmatige aanpassingen, maar kan VBA ongestoord zijn gang gaan.
 
Volgens mij kun je dit niet handmatig aanzetten. Je kunt dit bv. wel aan een event hangen bij het openen van je workbook:
Code:
Private Sub Workbook_Open()
    Sheets("Sheet1").Protect Password:="Michel", _
    DrawingObjects:=True, Contents:=True, Scenarios:=True, _
    UserInterfaceOnly:=True
End Sub

Waarbij je "sheet1" moet aanpassen naar de gewenste sheetnaam.
 
zet
Code:
ActiveSheet.Protect "wachtwoord"
vlak voor End Sub
 
DrawingObjects:=True,
Het stukje := wordt blauw en er verschijnt een pop-up scherm met: Compileerfout: Verwacht: Expressie
Vervolgens krijg ik de keuze uit OK of Help.
 
Bedoel je nu bij mijn code? Of die van Haije?

Als je in de code in het schermafdrukje wat je in post #7 hebt geplaatst na "Activesheet.Protect "Michel" een spatie en _ plaatst dan ziet VBA dat de regel die daarna volgt bij deze code hoort.

Dus:
Code:
Activesheet.Protect "Michel" _
DrawingObjects:=True, etc
 
En?

Werkt het met toevoeging van de underscore? (post #13)
Heb je mijn code al geprobeerd mbt UserInterfaceOnly? (post #10)
 
@ Peter B: Dit is het resultaat:

Macro's1.jpg

Ik snap er echt niets van.

@snb: Ik heb de tutorials al via Youtube gevolgd, maar daar wordt dit niet in uitgelegd. en een boek daarvoor kopen, omdat ik het 1-malig nodig heb is wat overdreven. Zeker als er hier zoveel kennis te vinden is.
 
Er hoort een komma achter "Michel"
Code:
Activesheet.Protect "Michel"[COLOR="#FF0000"],[/COLOR] _
 
In dit forum gaat het er ook om dat je de aangedragen suggesties zelf begrijpt.
 
Nu werkt het precies zoals ik het bedacht had.

Heel erg bedankt voor alle moeite die jullie hierin gestoken hebben.
Jullie zijn fantastisch.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan