Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sperren von Schaltflächen

Forumthread: Sperren von Schaltflächen

Sperren von Schaltflächen
04.01.2008 20:31:00
Schaltflächen
Hallo.
Folgendes Problem: Mein Excel Dok. hat mehrere Tabellenblätter, die will ich über zwei Button (Blattschutz/aktivieren bzw. Blattschutz/deaktivieren) vor Veränderungen schützen...
Das ist dabei rausgekommen. Funktioniert soweit auch, nur lassen sich die Button im Tabellenblatt "Schutz" nicht sperren (Haken bei Button-Eigenschaften ist gesetzt).

Private Sub CommandButton1_Click() 'Alle Blätter freigeben
On Error Resume Next
For Each Blatt _
In ActiveWorkbook.Sheets
Blatt.Unprotect Password:="123"
Next
End Sub



Private Sub CommandButton2_Click() ' Alle Blätter schützen
On Error Resume Next
For Each Blatt _
In ActiveWorkbook.Sheets
Blatt.Protect Password:="123", _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Next
Worksheets("Schutz").Unprotect Password:="123" ' Passwort in dem sich die Button befinden ä  _
_
ndern
Worksheets("Schutz").Protect Password:="456", _
DrawingObjects:=False, _
Contents:=True, _
Scenarios:=True
Worksheets("Schutz").EnableSelection = xlUnlockedCells
End Sub


Was mach ich falsch?
Danke schonmal

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Tipp: .Enable=True/False
04.01.2008 20:56:10
Matthias
Hallo Tinitus (ich hoffe Du hast keinen solchen, mit Doppel-"n")
Tipp, wie Du das mit den Button in der Tabelle Schutz lösen könntest.
https://www.herber.de/bbs/user/48806.xls
Userbild

Anzeige
AW: Tipp: .Enable=True/False
04.01.2008 21:02:00
Tinitus
Erstmal ein großes DANKE für die schnelle Antwort.
Eine Frage hätte ich noch: "Überall steht mit dem Haken in Gesperrt und aktivem Blattschutz werden auch Objekte gesperrt." Wieso geht das in meinem Code nicht? thx

probier mal mit mit ActiveSheet
04.01.2008 21:24:00
Matthias
Hallo
Probiers mal so

Option Explicit
Private Sub CommandButton2_Click() ' Alle Blätter schützen
Dim Blatt
For Each Blatt _
In ActiveWorkbook.Sheets
Blatt.Protect Password:="123", _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Next
ActiveSheet.Unprotect Password:="123" ' Passwort in dem sich die Button befinden ä _
ndern
ActiveSheet.EnableSelection = xlUnlockedCells
ActiveSheet.Protect Password:="456", DrawingObjects:=False, Contents:=True,  _
Scenarios:=True
End Sub


Userbild

Anzeige
Es hat klick gemacht!!
04.01.2008 21:50:00
Tinitus
So, hab es jetzt mit InputBoxen probiert und ich muss sagen das geht net mal schlecht:).

Sub BlattSchutz()
On Error Resume Next
Dim wks As Worksheet
Pwd = Application.InputBox("Passwort eingeben")
Pwd2 = Application.InputBox("Wiederholung")
If Pwd = Pwd2 Then
For Each wks In ActiveWorkbook.Worksheets
wks.Protect Password:=Pwd, DrawingObjects:=False, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Next wks
Else: MsgBox ("Passwörter stimmen nicht überein")
End If
End Sub



Sub Aufheben()
On Error Resume Next
Dim wks As Worksheet
Pwd = Application.InputBox("Passwort eingeben")
For Each wks In ActiveWorkbook.Worksheets
wks.Unprotect Password:=Pwd
Next wks
End Sub


...ein kleines Problem hätte ich aber doch noch. Wie kann ich im "Blattschutz- Aufheben" prüfen, ob das eingegebene Passwort richtig ist (die Blätter freigegeben sind) oder net.

Anzeige
Beispiel
04.01.2008 23:31:34
Matthias
Hallo
Habe gerade erst gesehen, das Du noch eine Frage hattest (da musst Du den Beitrag offen lassen
(Häkchen rein bei Frage noch offen)
Also ich würde es dann so lösen. PW=0123
Eine als Public deklarierte Variable, die beim Workbook.Open den String z.B. "0123" zugewiesen bekommt.
Konkret:
in ein Modul

Option Explicit
Public PwPerfekt As String
Sub Aufheben()
Dim wks As Worksheet
Dim Pwd As String
Pwd = Application.InputBox("Passwort eingeben")
If Pwd = PwPerfekt Then
For Each wks In ActiveWorkbook.Worksheets
wks.Unprotect Password:=Pwd
Next wks
Else
MsgBox "Passwort-Fehler"
End If
End Sub


in DieseArbeitsmappe


Option Explicit
Private Sub Workbook_Open()
PwPerfekt = "0123"
End Sub


Nun brauchst Du im Code nur abfragen ob Pwd=PwPerfekt ist.
also so: (wie oben im Modul)
Du solltest Dir angewöhnen mit Option Explicit zu arbeiten.
On Error Resume Next würde ich auch nur als letztes Mittel einsetzen.
Warum hast Du es denn drin?
Dadurch findest Du möglicherweise kleinere Fehler nicht! Wenns also nicht sein muss, raus damit!
Desweiteren deklarierst Du
Dim wks as Worksheet aber bei Pwd ist Fehlanzeige. Wenn schon, denn schon
Dim Pwd as String
PwPerfekt ist als Public schon deklariert
https://www.herber.de/bbs/user/48812.xls
Userbild

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige