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

Beveilig tabbladen met Macro werkt niet goed

Status
Niet open voor verdere reacties.

peter59

Terugkerende gebruiker
Lid geworden
21 mei 2007
Berichten
2.712
Besturingssysteem
Windows 11
Office versie
Office 365
Hallo,

Ik heb een macro waarin een stukje zit wat de tabbladen doet beveiligen met een wachtwoord.
Dit werkt opzich goed zij het dat de code de desbetreffende kolommen/cellen doet beveiligen met alleen "Ontgrendelde cellen selecteren".
Ik had graag indeze dat "Objecten bewerken" ook mogelijk is.
Dit al handmatig aangevinkt en opgeslagen maar bij het activeren van de code wordt dit weer uitgevinkt.
Is dit ergens in onderstaande code in te voegen?

Dank alvast voor het meedenken.

Mvg
Peter

Code:
Sub Verberg_Wis_Beveilig()

Application.ScreenUpdating = False
'Verberg Sheets
    Sheets(Array("10a", "17")).Select
    ActiveWindow.SelectedSheets.Visible = False
    Sheets("10a").Visible = xlVeryHidden
    Sheets("17").Visible = xlVeryHidden
    
    'Wis inhoud van achteraf ingevulde
    Sheets(Array("Invulsheet")).Select
    Range("C3:D300,H3:H300,J3:K300,N3:N300,P3:Q300").Select
    Selection.ClearContents
    
'Herstel formule
    Range("R3:S3").Select
    Selection.Copy
    Range("C3:D300").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
        
'Verberg kolommen
    Range("A:B,E:E,G:G,I:I,L:M").Select
    Selection.EntireColumn.Hidden = True
        Sheets("Invulsheet").Select


Dim sh As Object 'Beveilig alle tabbladen
    Dim Password As String
    Password = "Welkom01"
    For Each sh In ThisWorkbook.Sheets
        sh.Protect Password:=Password
    Next sh

    Range("K3").Select
    Application.ScreenUpdating = True
    
End Sub
 
Maak er eens dit van:
Code:
sh.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, Password:=Password
 
Edmoor,

Dat is het.
Ik had zelf ook al e.e.a. opgenomen met de macrorecorder en daar kwam een gedeelte van jou code ook uitgerold.
Deze opgenomen code weet ik waar overal tussen gevoegd maar helaas.
Deze van jou is dus het ei van Columbus waarvoor heel hartelijk dank.

Mvg
Peter
 
En maak er wat VBA van:

Code:
Range("R3:S3").Copy Range("C3:D300")

in plaats van

Code:
Range("R3:S3").Select
    Selection.Copy
    Range("C3:D300").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
 
Hallo SNB

Dank voor deze aanvulling (kortere code).
Ja, zo zie maar dat ik absoluut geen kei ben in VBA.
Ik doe veel met de macrorecorder en kan dan dit een klein beetje volgen hoe het e.e.a. is opgebouwd.
En natuurlijk, met de recorder wordt er ook veel "****" getoond wat natuurlijk veel korter kan.

Nogmaals dank voor deze aanvulling.

Mvg
Peter
 
opletten met variabelen die dezelfde naam hebben als specifieke termen in VBA, dus "PassWord" is te vermijden.
Als je dit in de module Thisworkbook zet, zou een macro normaal gezien zijn werk kunnen doen in een beveiligd werkblad.
Code:
Private Sub Workbook_Open()
   Dim sh      As Object                         'Beveilig alle tabbladen
   Dim Paswoord As String
   Paswoord = "Welkom01"
   For Each sh In ThisWorkbook.Sheets
      sh.Unprotect Paswoord
      sh.Protect Password:=Paswoord, userinterfaceonly:=True
   Next sh
End Sub
Zet bovenstaande er dus in, sla op en sluit je werkboek af en heropen.
Nu zou je normaal gezien moeten kunnen werken met macros zonder eerst "unprotect"
 
Cow18

Dank voor deze tip.
Het werkt.

Mvg
Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan