Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1160to1164
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
Inhaltsverzeichnis

Blattschutz

Blattschutz
Tom
Hallo,
meine excel-Datei umfasst ca. 50 Tabellenblätter, die durch folgendes Makro "auf einen Schlag" mit einem Blattschutz versehen werden können:
Sub A()

Sub BlattSchutz()
Application.ScreenUpdating = False
Dim wks As Worksheet
myPwd = Application.InputBox("Administrations-Passwort")
myPwd2 = Application.InputBox("Passwort bestätigen")
Range("E3").Select
Application.ActiveCell.FormulaR1C1 = "Der Blattschutzmodus ist aktiviert!"
Range("E3").Select
Selection.Font.ColorIndex = 43
Selection.Font.Bold = True
Range("F5").Select
If myPwd = myPwd2 Then
For Each wks In ActiveWorkbook.Worksheets
wks.Protect Password:=myPwd
Next wks
Else: MsgBox ("Paßwort übereinstimmend eingeben")
End If
Application.ScreenUpdating = True
End Sub
Ich müsste aber zwei Tabellenblätter von diesem Blattschutz ausnehmen. Diese wiederum sollen mit einem anderen Blattschutz (also anderem Passwort) geschützt werden.
Ich hatte hier im Forum bereits eine nahezu gleiche Frage gestellt und man hatte mir geholfen, indem im Code ein "On Error Resume Next" eingebaut wird. Es hat sich in der Praxis aber herausgestellt, dass sich dann die Passwörter irgendwann ins Gehege kommen und nicht mehr funktionieren bzw. "Unsinn" produzieren.
Kann mir jemand helfen?
Gruß
Tom

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Blattschutz
23.06.2010 19:55:04
Ramses
Hallo
Dann prüf doch einfach die Sheetnamen...
Option Explicit

Sub BlattSchutz()
    Application.ScreenUpdating = False
    Dim wks As Worksheet
    myPwd = Application.InputBox("Administrations-Passwort")
    myPwd2 = Application.InputBox("Passwort bestätigen")
    Range("E3").Select
    Application.ActiveCell.FormulaR1C1 = "Der Blattschutzmodus ist aktiviert!"
    Range("E3").Select
    Selection.Font.ColorIndex = 43
    Selection.Font.Bold = True
    Range("F5").Select
    If myPwd = myPwd2 Then
        For Each wks In ActiveWorkbook.Worksheets
            'Name der zwei Tabellen die nicht so geschützt werden sollen
            If wks.Name <> "Name1" Or wks.Name <> "Name2" Then
                wks.Protect Password:=myPwd
            End If
        Next wks
        Else: MsgBox ("Paßwort übereinstimmend eingeben")
    End If
    Application.ScreenUpdating = True
End Sub

Gruss Rainer
Anzeige
AW: Blattschutz
23.06.2010 22:19:02
Tom
Hallo Rainer,
vielen Dank für Deine Antwort. Ich habe heute nicht mehr die Möglichkeit, das zu testen. Morgen gebe ich Dir dann an dieser Stelle ein feedback, ob es geklappt hat. Vielen Dank schon mal!
Gruß
Tom
AW: Blattschutz
24.06.2010 11:00:30
Tom
Hallo,
ich habe den Code ausprobiert. Mir wird folgender Fehlerhinweis angezeigt: "Fehler bei Kompilieren: Variable nicht definiert" (gelb gemarkt wird dabei "myPwd" - dritte Zeile -).
Neben diesem Fehlerhinweis, der erklären soll, warum das Makro nicht funktioniert, habe ich noch folgende Frage: wie gebe ich die Namen der zwei Tabellen, die geschützt werden sollen, an?
(worksheet "Tabellenblatt1" oder Tabellenblatt 1 oder "Tabellenblatt 1")?
Vielleicht kannst Du mir da nochmals helfen?
Viele Grüße
Tom
Anzeige
AW: Blattschutz
24.06.2010 12:55:00
Das
Hallo Tom,
Versuch mal:
Option explicit
Sub BlattSchutz()
Application.ScreenUpdating = False
Dim wks As Worksheet
Dim myPwd$, myPdw2$       ' "Name1" Or wks.Name  "Name2" Then
wks.Protect Password:=myPwd
End If
Next wks
Else: MsgBox ("Paßwort übereinstimmend eingeben")
End If
Application.ScreenUpdating = True
End Sub
Den Blattnamen gibst du bitte mit Anführungszeichen "" ein. Leerzeichen werden miteingegeben. Also wenn der Name Blatt 1 lautet musst du "Blatt 1" eingeben.
Rückmeldung wäre nett.
Gruß Holger
AW: selbes Problem ...
24.06.2010 13:10:15
Tom
Hallo Holger,
zunächst vielen Dank für Deine Antwort. Leider erscheint immer noch der gleiche Fehlerhinweis. Allerdings wird der Fehler von excel nun anders "markiert": "Sub Blattschutz" ist gelb unterlegt, "myPwd2" blau.
Woran kann´s liegen?
Viele Grüße
Tom
Anzeige
Buchstabendreher ;-)
24.06.2010 13:20:35
Das
Mach mal bitte aus meinem myPdw2 ein myPwd2
AW: Buchstabendreher ;-)
24.06.2010 13:41:54
Tom
Hei,
den Dreher hätte ich auch selbst erkennen können :-(
Es funktioniert nun wohl deshalb noch nicht, weil ich die Blattnamen falsch erfasse. Ich habe erfasst:
(blablabla)
If myPwd = myPwd2 Then
For Each wks In ActiveWorkbook.Worksheets
"Berechnung"
"SoKo -Eingabe"
If wks.Name "Berechnung" Or wks.Name "SoKo-Eingabe" Then
wks.Protect Password:=myPwd
End If
(blablabla)
Nun erscheint der Hinweis: "Fehler beim Kompilieren: Erwartet: Zeilennumer oder Sprungmarke oder Anweisung oder Anweisungsende". Die Tabellennamen sind als Fehlerhinweis rot gekennzeichnet.
Ich bin optimistisch, dass Du mir auch hier weiter helfen kannst...!
Gruß
Tom
Anzeige
AW: Buchstabendreher ;-)
24.06.2010 13:52:52
Das
Da hast du etwas falsch verstanden. Ich habe dir jetzt die Blattnamen an die richtige Stelle gesetzt.
Option explicit
Sub BlattSchutz()
Application.ScreenUpdating = False
Dim wks As Worksheet
Dim myPwd$, myPwd2$
myPwd = Application.InputBox("Administrations-Passwort")
myPwd2 = Application.InputBox("Passwort bestätigen")
Range("E3").Select
Application.ActiveCell.FormulaR1C1 = "Der Blattschutzmodus ist aktiviert!"
Range("E3").Select
Selection.Font.ColorIndex = 43
Selection.Font.Bold = True
Range("F5").Select
If myPwd = myPwd2 Then
For Each wks In ActiveWorkbook.Worksheets
'Name der zwei Tabellen die nicht so geschützt werden sollen
If wks.Name  "Berechnung" Or wks.Name  "SoKo -Eingabe" Then
wks.Protect Password:=myPwd
End If
Next wks
Else: MsgBox ("Paßwort übereinstimmend eingeben")
End If
Application.ScreenUpdating = True
End Sub
Probiere es jetzt nochmal und sag bescheid, ob es geklappt hat.
Gruß Holger
Anzeige
Fehler!!!
24.06.2010 14:00:46
Rudi
Hallo,
das ist falsch!
            If wks.Name  "Berechnung" Or wks.Name  "SoKo -Eingabe" Then

Die beiden Blätter werden auch gechützt. Es muss And sein.
Gruß
Rudi
AW: Buchstabendreher ;-)
24.06.2010 14:16:11
Tom
Hallo Holger,
ja, das hatte ich falsch verstanden. Vielen Dank für Deine Hilfe, es funktioniert nun. ABER: ich muss den Blattschutz ja auch aufheben können. Das klappt mit dem folgenden Makro:
Sub Aufheben()
Application.ScreenUpdating = False
Dim wks As Worksheet
Dim myPwd$, myPwd2$
myPwd = Application.InputBox("Passwort bestätigen")
For Each wks In ActiveWorkbook.Worksheets
wks.Unprotect Password:=myPwd
Next wks
Sheets("Hauptmenue").Select
Range("E3").Select
Application.ActiveCell.FormulaR1C1 = "Der Blattschutzmodus ist deaktiviert!"
Range("E3").Select
Selection.Font.ColorIndex = 3
Selection.Font.Bold = True
Range("F5").Select
Application.ScreenUpdating = True
End Sub
Wenn ich aber die beiden Tabellenblätter mit einem separaten Blattschutz versehe (anderes Kennwort), dann kann ich den "grossen" Blattschutz nicht mehr entsperren. Excel behauptet, das Passwort nicht zu kennen (Fehleingabe meinerseits ist ausgeschlossen).
Könntest Du Dir da eine Lösung vorstellen?
Gruß
Tom
Anzeige
AW: Buchstabendreher ;-)
24.06.2010 14:27:19
Das
Hallo Tom,
da ich selbst noch Anfänger bin, gebe ich das dann doch lieber an die Fachleute hier weiter ;-)
Gruß Holger
AW: Buchstabendreher ;-)
24.06.2010 14:27:22
Rudi
Hallo,
klar geht das schief, wenn du versuchst, jedes Blatt mit dem PW zu entschützen.
Sub Aufheben()
Application.ScreenUpdating = False
Dim wks As Worksheet
Dim myPwd$, myPwd2$
myPwd = Application.InputBox("Passwort bestätigen")
For Each wks In ActiveWorkbook.Worksheets
Select Case LCase(wks.Name)
Case "berechnung", "soko-eingabe"
'nix passiert
Case Else
wks.Unprotect Password:=myPwd
End Select
Next wks
Sheets("Hauptmenue").Select
With Range("E3")
.Value = "Der Blattschutzmodus ist deaktiviert!"
.Font.ColorIndex = 3
.Font.Bold = True
End With
Range("F5").Select
Application.ScreenUpdating = True
End Sub

Gruß
Rudi
Anzeige
AW: DANKE!!! (mT)
24.06.2010 14:42:26
Tom
Hallo Holger,
hallo Rudi,
vielen Dank für Eure Hilfe. Jetzt klappt´s!
Gruß
Tom
Kleinigkeit - select
28.06.2010 13:40:34
Klaus
Hallo Tom,
wo du grad dabei bist, schmeiss auch die überflüssigen .select raus.
Anstatt:

Sheets("Hauptmenue").Select
Range("E3").Select
Application.ActiveCell.FormulaR1C1 = "Der Blattschutzmodus ist deaktiviert!"
Range("E3").Select
Selection.Font.ColorIndex = 3
Selection.Font.Bold = True
Range("F5").Select
Machs so:

With Sheets("Hauptmenue").Range("E3")
.value = "Der Blattschutzmodus ist deaktiviert!"
.Font.ColorIndex = 3
.Font.Bold = True
end with
Range("F5").Select '(diese Zeile kannst du eingentlich löschen - es sei denn du willst das F5  _
angewählt wird!)
Grüße,
Klaus M.vdT.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige