Tabellenblatt schützen mit VBA
Hi, ich brauche mal Eure Hilfe. Ich möchte von einer Excel-Datei einzelne Tabellenblätter schützen, dass diese nicht verändert werden können. Hat jemand einen VBA-Code dafür parat?
Vielen Dank im Voraus. Gruß tinki
Antwort schreiben
Antwort 1 von rainberg vom 09.03.2021, 09:22 Options
Hallo tinki,
mach's doch einfach mit dem Makrorecorder.
Aber bedenke, der Blattschutz in Excel ist in Wirklichkeit keiner, da er mit primitiven Mitteln ausgehebelt werden kann.
Gruß
Rainer
Antwort 2 von tinki vom 09.03.2021, 10:18 Options
Hallo Rainer,
da ich diese Tabelle ein paar Dummy zur Verfügung stellen muss, die gerade Excel öffnen können :-), wollte ich mit folgendem VBA-Code ein Tabellenblatt, welchen nicht verändert werden darf sperren. Leider funktioniert das nicht und ich habe hier ein Hängerchen :-( Schaut mal bitte, was hier falsch ist, danke:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zelle As Range
For Each Zelle In Target.Cells
If Zelle.HasFormula Then
ActiveSheet.Protect
Exit Sub
Else
ActiveSheet.Unprotect
End If
Next Zelle
End Sub
Gruß tinki
Antwort 3 von fedjo vom 09.03.2021, 12:26 Options
Hallo Tinki,
was willst du genau schützen, nur einzelne Tabellenblätter einer Arbeitsmappe oder nur die Zellen die Formeln enthalten?
Gruß
fedjo
Antwort 4 von coros vom 10.03.2021, 07:58 Options
Hallo tinki,
den VBA-Code, den Du gepostet hast schütz Formeln in dem aktiven Tabellenblatt. Das bedeutet, klickst Du in dem Tabellenblatt in eine Zelle, in der eine Formel eingetragen ist, wird das Blatt geschützt. Klickst Du in eine Zelle, die keine Formel enthält, wird der Blattschutz aufgehoben.
Um das Tabellenblatt zu schützen reicht Dir der Befehl
ActiveSheet.Protect
aus. Hiermit wird das aktuelle Blatt geschützt. Möchtest Du mehrere Tabellenblätter mit einem Blattschutz versehen, dann könnte so ein Makro z.B. folgendermaßen aussehen:
Option Explicit
Sub Sheet_Protect()
Sheets("Tabelle1").Protect "Hier dann ein eventuelles Passwort eintragen"
Sheets("Tabelle2").Protect "Hier dann ein eventuelles Passwort eintragen"
End Sub
In diesem Beispiel werden die Blätter mit dem Namen „Tabelle1“ und „Tabelle2“ mit einem Passwort versehen. Der Text „Hier dann ein eventuelles Passwort eintragen“, der in den Anführungszeichen ( "" ) steht, kann gelöscht, wenn kein Passwort vergeben werden soll, oder gegen das Passwort ausgetauscht werden.
Um einen Blattschutz dann wieder aufzuheben, sähe der Code so aus:
Option Explicit
Sub Sheet_Protect()
Sheets("Tabelle1").Unprotect "Hier dann ein eventuelles Passwort eintragen"
Sheets("Tabelle2").Unprotect "Hier dann ein eventuelles Passwort eintragen"
End Sub
Das mit dem Passwort verhält sich genau wie beim Schützen der Blätter.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von tinki vom 10.03.2021, 08:46 Options
hi,
ihr bringt mich hier auf eine ganz andere idee. also, das erst tabellenblatt darf angeschaut werden, nur die formeln sollen geschützt werden. das 2. tabellenblatt bleibt flexibel und das 3. und 4 werde ich komplett passwort schützen, die daten dürfen nicht eingesehen oder geändert werden. das werde ich gleich mal mit der formel von oliver probieren, danke schon mal dafür.
meine versuchte programmierung oben soll eigentlich die formeln schützen, flutscht aber irgendwie nicht.
gruß tinki
Antwort 6 von coros vom 10.03.2021, 08:57 Options
Hallo Tinki,
wo hast Du den Code, den Du gepostet hast und der auch funktioniert, eingefügt? In ein Modul oder in das VBA-Projekt des Tabellenblatts? Der Code gehört in das VBA-Projekt des Tabellenblatts. Schaue hierzu mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 7 von tinki vom 10.03.2021, 09:50 Options
Hi, es funktioniert, wie ich es zuletzt machen wollte, danke Oliver :-)
Meine Makros waren auf deaktiv gestellt :-( Das neue Office war Schuld.
Gruß tinki
Antwort 8 von tuerpi vom 10.03.2021, 15:29 Options
Hi, ich brauche mal wieder Hilfe.
Ich habe als Beispiel in den Zellen A1 "Sort-1" und in Zelle A2 "-" stehen. Nun möchte ich aber, dass in A4 automatisch jetzt der Inhalt von A1 angezeigt wird und wenn es umgekehrt ist, also A1 "-" und A2 "Sort-2", dann soll der Inhalt von A2 angezeigt werden. Mit normaler "Wenn-Formel" komme ich nicht weiter. Kann mir da jemand helfen?
Gruß tuerpi
Antwort 9 von tuerpi vom 10.03.2021, 15:30 Options
Schitt das war falsch, ich interessierte mich für diesen Beitrag, sorry, ich gelobe Besserung :-( Mache eine neue Anfrage auf. Sorry tinki