Excel VBA Blattschutz ein und aus per Button?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Hallo,

der Code zum Button wäre in dieser Art:

Private Sub CommandButton1_Click()
If ActiveSheet.ProtectContents = False Then
    ActiveSheet.Protect Password:="Beispiel", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingRows:=True
Else
    ActiveSheet.Unprotect Password:="Beispiel"
End If

End Sub

Bin mir aber nicht sicher ob ich dich richtig verstehe was du mit den Zeilen formatieren erlauben genau erlauben möchtest. AllowFormattingRows heißt man dürfte die Zeilenhöhe verändern und Zeilen Ein- bzw Ausblenden. Falls du auch z.B die Hintergrundfarbe ändern lassen dürfen möchtest, müsste man AllowFormattingCells verwenden, dies lässt sich aber meines Wissens nach nicht auf die Formatierung der ganzen Zeile statt einzelner Zellen beschränken.


Murnax 
Beitragsersteller
 20.08.2021, 10:20

Hey,

Danke für die Antwort.

Der Command passt, ich will damit bezwecken, dass man als user des programms Zeilen ein und Ausblenden kann.

Leider ist mir aber aufgefallen, dass das mit dem Passwort nicht hinhaut. Also wenn ich auf den Button clicke dann wechselt es zwar zwischen geschützt und ungeschützt, aber ich muss kein Password eingeben.

Murnax 
Beitragsersteller
 20.08.2021, 10:28
@Murnax

Hab inzwischen rausgefunden wie es funktioniert:

Sub CommandButton1_Click()

If ActiveSheet.ProtectContents = False Then

   ActiveSheet.Protect Password:="+1516", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingRows:=True

Else

   ActiveSheet.Unprotect

End If

Ich musste jediglich das "Password:="+1516"" weglassen.

Vielen Dank nochmal :)

DanKirpan  20.08.2021, 10:33
@Murnax

Hi,

ja genau das war überflüssig^^, ka was ich da gedacht hatte das es mir sinnvoll schien das Passwort beim entsperren direkt mitzugeben.

Bitte :D

falls du auch den Laufzeitfehler beim falschen PW vermeiden willst, kannst du es über eine Sprungmarke abfangen:

Private Sub CommandButton1_Click()
on error GoTo PW
If ActiveSheet.ProtectContents = False Then
    ActiveSheet.Protect Password:=InputBox("Passwort eingeben:"), DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingRows:=True
Else
    ActiveSheet.Unprotect
End If

Exit Sub
PW:
MsgBox "Falsches Passwort"
End Sub