Anzeige
Archiv - Navigation
1308to1312
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

TabBlätter vor Veränderung schutzen

TabBlätter vor Veränderung schutzen
15.04.2013 16:12:23
Bernd
Hallo zusammen,
nun ist mein Projekt fast fertig, aber etwas nervt mich noch und zwar die Tatsache, dass alle meine Versuche, alle Tabellenblätter vor jeglicher Veränderung zu schützen, scheitern.
Ich habe bei Formatierung von Zellen Bereiche gesperrt und andere nicht. Dabei löst der Debugger häufig Fehler (oft bei Autofilter) aus, so dass ich alle Sperrungen wieder aufgehoben habe.
Wie kann ich über VBA erreichen, dass der Anwender keinerlei Veränderungen in den Tabellen vor nehmen kann?
Gruß aus Bremen
Bernd

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TabBlätter vor Veränderung schutzen
15.04.2013 16:36:47
JACKD
Hallo Bernd
und zwar musst du manuell während des Makrodurchlaufs den Blattschutz aufheben und im anschluss wieder ausschalten.
Also
Private Sub ()
Blattschutz aufheben
eigentlicher makrodurchlauf
Blattschutz anschalten
End Sub

Grüße

AW: TabBlätter vor Veränderung schutzen
15.04.2013 16:49:42
Bernd
Hallo JackD,
Danke für deine schnelle Hilfe. Hatte ich bereits!
Gibt es noch andere Lösungen per VBA?
Grus aus Bremen
Bernd

AW: TabBlätter vor Veränderung schutzen
15.04.2013 20:29:00
Matze
Hallo Bernd,
hier ein Ansatz der Jedes Blatt schützt
zw. die "" das Passwort schreiben
BEDENKE: Excel ist nicht SICHER
Codezeilen in ein Modul
Option Explicit 'mit in den Code
Sub schutzweg()
Dim sh As Object
For Each sh In ActiveWorkbook.Sheets
sh.Unprotect Password:="DeinPasswort"
Next sh
End Sub Sub schutzan()
Dim sh As Object
For Each sh In ActiveWorkbook.Sheets
sh.Protect Password:="DeinPasswort"
Next sh
End Sub Du kannst dann beim öffnen der Mappe im VBA Editor unter "DieserArbeitsmappe"
mit dem Ereignis:
Private Sub Workbook_Open()
Call schutzan
End Sub
alle deine Blätter sofort schützen.
Matze

Anzeige
Oops warum hat er die Zeilen verschoben? nochmal
15.04.2013 20:31:42
Matze
Option Explicit 'mit in den Code

Sub schutzweg()
Dim sh As Object
For Each sh In ActiveWorkbook.Sheets
sh.Unprotect Password:="DeinPasswort"
Next sh
End Sub

Sub schutzan()
Dim sh As Object
For Each sh In ActiveWorkbook.Sheets
sh.Protect Password:="DeinPasswort"
Next sh
End Sub

AW: Oops warum hat er die Zeilen verschoben? nochmal
16.04.2013 10:15:05
Bernd
Hallo Matze,
Danke für deine Hilfe, es funktioniert aber nicht, leider.
Gruß
Bernd

Userinterfaceonly
16.04.2013 08:38:14
Klaus
Hi,
setze den Blattschutz nur per VBA, nicht per Button! Mit:
ActiveSheet.Protect userinterfaceonly:=True, Password:="123"
schützt du das aktive Blatt vor allen Benutzereingaben, erlaubst VBA aber alle Veränderungen.
Grüße,
Klaus M.vdT.

Anzeige
AW: Userinterfaceonly
16.04.2013 10:26:56
Bernd
Hallo Klaus,
Danke für deine Hilfe.
Zitat: ...schützt du das aktive Blatt vor allen Benutzereingaben, erlaubst VBA aber alle Veränderungen
Verstehe ich das richtig?
1. Wo gehört der Code gehört hin "Diese Arbeitsmappe" oder "Worksheet_Activate" oder ?
2. Die aktive Tabelle kann vom Benutzer nicht mit Daten gefüllt werden?
Gruß
Bernd

AW: Userinterfaceonly
16.04.2013 10:38:22
Klaus
Hi,
1. Wo gehört der Code gehört hin "Diese Arbeitsmappe" oder "Worksheet_Activate" oder ?
Keine Ahung, halt dahin wo du den Schutz setzen willst. Ich kenne ja dein Projekt nicht. Wenn du einfach alle Blätter vor Nutzereingaben schützen willst, nimm halt Matze's Code für alle Blätter aus ein paar Beiträgen weiter oben, modifizier ihn mit UserinterfaceOnly und CALL-e ihn aus Workbook-Open oder sonstwoher.
Sub schutzan()
Dim sh As Object
For Each sh In ActiveWorkbook.Sheets
sh.Protect userinterfaceonly:=True, Password:="123"
Next sh
End Sub
2. Die aktive Tabelle kann vom Benutzer nicht mit Daten gefüllt werden?
In der so geschützten Tabelle kann der User Zellen, deren Eigenschaft .locked auf TRUE steht (alle), nicht mehr verändern, korrekt. Pauschal könnte man auf deine Frage auch antworten: "ja", aber dazu bin ich zu pendantisch.
VBA darf allerdings in der Tabelle alles. Filtern, löschen, Zeilen einfügen ....
Grüße,
Klaus M.vdT.

Anzeige
AW: Userinterfaceonly
16.04.2013 10:41:34
Matthias
Hallo
Code gehört In DieseArbeitsmappe
Option Explicit
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ActiveSheet.Protect userinterfaceonly:=True, Password:="123"
End Sub
Nun kannst Du mit VBA alles machen und der Benutzer nicht.
Gruß Matthias

kommentar AW: Userinterfaceonly
16.04.2013 11:00:25
Klaus
Ein Kommentar dazu:
das Ereigniss "SheetActivate" wird beim öffnen der Arbeitsmappe nicht sofort ausgeführt - erst beim Blattwechsel.
Das heisst, solltest du den Schreibschutz entfernen und dann die Datei speichern / schließen, kann der User der es als nächstes öffnet im aktiven Blatt ändern wie er will! Solange er das Blatt nicht wechselt, sobald er das einmal macht hat der Schutz gegriffen.
Einfachster Workaround:
Erstelle ein Blatt namens "Hallo", auf dem unkritische Inhalte sind, und folgenden Code dazu:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Hallo").Activate
End Sub
Jetzt fängt der User immer im Blatt "Hallo" an, muss also erst ein Blatt wechseln - und ist im Schutz "gefangen"
Grüße,
Klaus M.vdT.
Ja, auch dass kann man umgehen zB indem man "ohne Makros" startet. Aber der Blattschutz ist eh innerhalb von Sekunden geknackt, wenn man es darauf anlegt.

Anzeige
ist mir bekannt ...
16.04.2013 11:45:24
Matthias
Hallo
hatte ich nur vergessen, gleichzeitig auch ins Workbook_Open zu schreiben, sorry dafür
Private Sub Workbook_Open()
ActiveSheet.Protect userinterfaceonly:=True, Password:="123"
End Sub

Gruß Matthias

@ Alle, Laie (Bernd) versteht Bahnhof
16.04.2013 12:13:12
Bernd
Hallo zusammen,
also alle Zellen in allen Blättern, wo Daten eingefügt werden, habe ich bei "Zellen formatieren" nicht "gesperrt" bzw. "ausgeblendet"
Konkret: wenn der Benutzer die Arbeitsmappe öffnet, soll er keine Veränderungen jedweder Art vornehmen dürfen, außer die Dateneingabe in den freigegebenen Zellen.
Ich hoffe, dass ich mich klarer ausdrücken konnte.
Bitte nun für mich als Laie. Wo sollte welcher Code wo hin?
Danke im Voraus!
Gruß
Bernd

Anzeige
AW: @ Alle, Laie (Bernd) versteht Bahnhof
16.04.2013 12:49:12
Klaus
Userbild

AW: @ Alle, Laie (Bernd) versteht Bahnhof
16.04.2013 13:43:33
Bernd
Hallo Klaus,
Danke, Danke für deine Hilfe hat gepasst!
Gruß
Bernd

Danke für die Rückmeldung! owT
16.04.2013 14:08:24
Klaus
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige