Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
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

Laufzeitfehler 1004 bei Passwortschutz

Laufzeitfehler 1004 bei Passwortschutz
29.10.2015 08:46:43
Marlen
Hallo liebe Profis,
hier die Datei um die es geht: https://www.herber.de/bbs/user/101115.xls
Ich habe mit eurer Hilfe ein Makro geschrieben und dann alle Blätter über ein Makro:
Sub WLV_schuetzen()
Application.ScreenUpdating = False
For Each Sheet In ActiveWorkbook.Worksheets
Sheet.Protect Password:="WLV"
Next
Application.ScreenUpdating = True
End Sub

geschützt. Wenn ich die Datei speichere und dann auf dem Tabellenblatt 1 das Userform durch die Schaltfläche aktivieren will, bringt er mir einen Laufzeitfehler.
Laufzeitfehler '1004':
Dieser Befehl kann für ein geschütztes Blatt nicht verwendet werden. Sie müssen zuerst den Schutz des Blattes aufheben, um diesen Befehl zu verweden. Sie werden möglicherweise aufgefordert, ein Kennwort einzugeben.

Mein Problem ist aber, dass ich die Arbeitsmappe ungern ungeschützt verwenden möchte, da sie im Unternehmen durch mehrere Mitarbeiter genutzt, von denen aber nicht bearbeitet werden soll.
Habt ihr eine Idee woran es liegt und wie ich diesen Fehler umgehen kann?
Vielen Dank und viele Grüße
Marlen

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 bei Passwortschutz
29.10.2015 08:51:58
matthias
Hallo Marlen,
das Problem liegt daran, dass dein Blattschutz bereits aktiv ist und du ihn nicht doppelt setzen kannst. Du musst also vorher Prüfen ob für das Blatt ein Blattschutz existiert oder nicht. Das ganze geht mit "ActiveSheet.ProtectContents":
Sub WLV_schuetzen()
Application.ScreenUpdating = False
For Each Sheet In ActiveWorkbook.Worksheets
If Sheet.ProtectContents = False Then Sheet.Protect Password:="WLV"
Next
Application.ScreenUpdating = True
End Sub
lg Matthias

AW: Laufzeitfehler 1004 bei Passwortschutz
29.10.2015 09:00:16
Marlen
Hallo Matthias,
mein Passwortschutz läuft soweit einwandfrei. Problem ist ja, dass er mein Userform nicht öffnet in der Datei sondern eben diesen Laufzeitfehler bringt.
Mit deiner Änderung bleibt der Fehler.
VG
Marlen

Anzeige
AW: Laufzeitfehler 1004 bei Passwortschutz
29.10.2015 09:06:43
matthias
Ach sorum wird ein Schuh draus,
natürlich kann deine Userform nicht schreiben wenn du es jedem verbietest. Baue in dein 'UF_Initialize' doch ein 'Sheets("Name").Unprotect "WLV" ' ein. Wenn du fertig bist, nutzt du wieder '.Protect' und gut ist.
lg Matthias

Unprotect
29.10.2015 09:41:22
Marlen
Wie ich die lieben Kollegen kenne, klicken die mir dann irgendwo rum und zerhauen mir die Tabellen. Deshalb würde ich das gern umgehen wollen. Gibt es eventuell auch eine andere Variante?

AW: Unprotect
29.10.2015 09:49:00
matthias
Schonmal probiert aus deiner Userform rauszuklicken? Geht nicht während sie läuft, weil du es nicht explizit zugelassen hast.
Beim Beenden der Userform musst du dein Passwort wieder setzen, da du keinen eigenen "Schließen"-Button eingebaut hast, kann man sich das recht leicht machen. Über das "X" rechts oben wird ein Event getriggert, schreibe den Blattschutz dort rein:
Private Sub Userform_QueryClose(Cancel As Integer, closemode As Integer)
Sheet("Name").Protect "WLV"
End Sub
lg

Anzeige
AW: Unprotect
29.10.2015 09:49:13
EtoPHG
Hallo Marlen,
Den lieben Kollegen schuld geben ist etwas bescheiden!
Wenn deine Userform modal arbeitet (was die Default-Einstellung ist), dann kann niemand auf den Tabellen rumhaken, sondern der Code der UF verändert den Inhalt der Tabellen. Damit kann es dann nur noch am/an der ProgrammiererIn des Codes liegen! Die Tabellen einfach wieder schützen, bevor ein .Hide oder Unload der UF stattfindet!
Gruess Hansueli

und du ihn nicht doppelt setzen kannst
29.10.2015 09:20:05
Rudi
Hallo Matthias,
das ist falsch.
Solange du das gleiche PW verwendest, kannst du Blattschutz setzen bis der Arzt kommt.
Sub xxx()
Dim i
For i = 1 To 1000
ActiveSheet.Protect "xxx"
Next
End Sub

Gruß
Rudi

Anzeige
AW: und du ihn nicht doppelt setzen kannst
29.10.2015 09:51:36
matthias
Stimmt Rudi,
ich bin auch im ersten Post davon ausgegangen, dass es um den Blattschutz setzen geht und dieser nicht funktioniert, weil verschiedene Passwörter im Umlauf sind. Das Missverständnis haben wir ja bereits ausgeräumt.
lg Matthias

...hier kommt der Arzt ;-) (owT)
29.10.2015 10:03:17
EtoPHG
Userbild

AW: Laufzeitfehler 1004 bei Passwortschutz
29.10.2015 09:51:18
Rudi
Hallo,
in DieseArbeitsmappe:
Private Sub Workbook_Open()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Protect Password:="WLV", userinterfaceonly:=True
Next wks
End Sub

userinterfaceonly lässt Änderungen durch Code zu aber nicht durch den Benutzer.
Gruß
Rudi

Anzeige
AW: Laufzeitfehler 1004 bei Passwortschutz
29.10.2015 10:02:50
Marlen
Danke Rudi. So in etwa hatte ich mir das vorgestellt. Jetzt bringt er mir aber den nächsten Fehler.
Laufzeitfehler '438'
Objekt unterstützt diese Eigenschaft oder Methode nicht.

Leider kann ich auch nicht auf Debuggen gehen, weil er mir die Schaltfläche ausgraut.

nicht nachvollziehbar. owT
29.10.2015 11:33:01
Rudi

AW: nicht nachvollziehbar. owT
29.10.2015 11:51:49
Marlen
Jetzt geht's. Wer weiß, wo ich den Hänger hatte.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige