Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

Anzeige
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige