Excel VBA Blattschutz ein und aus per Button?
Hallo allerseits,
ich bin gerade dabei einen Kalkulator mit Excel zu erstellen.
Dabei bin ich auf folgendes Problem gestoßen:
Ich möchte Das Blatt per Button entsperren, sperren und man sollte im gesperrten Zustand die Zeilen formatieren können.
AllowFormattingCells:=True
Sub Blattsperren()
On Error Resume Next
If ActiveSheet.ProtectContents = False Then GoTo Fehler
ActiveSheet.Unprotect
Exit Sub
Fehler:
ActiveSheet.Protect "+1516"
End Sub
Hat da jemand eine Idee, wie man die Formel richtig aufstellt?
Vielen Dank im Voraus
1 Antwort
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.
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 :)
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
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.