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

Wachtwoordbeveiliging bij bladbeveiliging in VBA

Status
Niet open voor verdere reacties.

tonp60

Gebruiker
Lid geworden
29 jul 2009
Berichten
136
Hallo

Ik wil graag een blad beveiligen door middel van een VBA-script. De gebruiker mag enkele acties wel uitvoeren. Hiervoor gebruik ik het volgende script:
Sub Beveiligen()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:= True, AllowFormattingCells:=True
End Sub

Ik wil echter ook een wachtwoord voor het opheffen of aanzetten van de beveiliging er in zetten.
Als ik het script opneem met een macro wordt dit stuk code niet vermeld in het VBA.
Wie kan mij hiermee helpen?

Groet,
Ton
 
Zo misschien:

Code:
Sub Vrijgeven()
If InputBox("Wachtwoord ingeven aub") = 1234 Then
ActiveSheet.Unprotect
Exit Sub
End If
MsgBox " Foutief paswoord!"
End Sub
 
Je zou dit onder een knop kunnen zetten.

Code:
Private Sub CommandButton1_Click()

If InputBox("Wachtwoord ingeven aub") = 1234 Then
    
    
    If Blad1.CommandButton1.Caption = "Beveiligen" Then
    Blad1.CommandButton1.Caption = "Beveiliging opheffen"
    Else
    Blad1.CommandButton1.Caption = "Beveiligen"
    End If

    If ActiveSheet.ProtectContents = True Then
    ActiveSheet.Unprotect Password:="1234"
    Else
    ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
    End If
    
Else
MsgBox " Foutief paswoord!"
End If
  
End Sub
 
Laatst bewerkt:
@SjonR:
Iets anders geschreven:
Code:
Private Sub CommandButton1_Click()
    With ActiveSheet
        If .ProtectContents Then
            If InputBox("Wachtwoord ingeven aub") = "1234" Then
                .Unprotect Password:="1234"
            Else
                MsgBox "Foutief wachtwoord!"
            End If
        Else
            .Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
        End If
        .CommandButton1.Caption = IIf(.ProtectContents, "Beveiliging opheffen", "Beveiligen")
    End With
End Sub
 
Laatst bewerkt:
Mooi Ed, ik moet de With gaan gebruiken... stuk overzichtelijker
 
Ja, en gebruik maken van de Boolean waarden :)
Hou er tevens rekening mee dat Inputbox altijd een String oplevert.
Gebruik dus "1234" in plaats van 1234, anders krijg je een fout bij het annuleren van de Inputbox.
 
Laatst bewerkt:
of
Code:
Sub M_snb()
   If ActiveSheet.ProtectContents Then
     ActiveSheet.Unprotect InputBox("Wachtwoord")
   Else
     ActiveSheet.Protect "1234", , -1, , -1
   End If
End Sub
 
Hij is weer mooi kort :thumb:
 
Zo nodig:

Code:
Sub M_snb()
   If ActiveSheet.ProtectContents Then
     On Error Resume Next
     ActiveSheet.Unprotect InputBox("Wachtwoord")
     If Err.Number <> 0 Then MsgBox "helaas"
   Else
     ActiveSheet.Protect "1234", , -1, , -1
   End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan