12.7k Aufrufe
Gefragt in Tabellenkalkulation von
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

9 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
Hallo Tinki,
was willst du genau schützen, nur einzelne Tabellenblätter einer Arbeitsmappe oder nur die Zellen die Formeln enthalten?

Gruß
fedjo
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
Hi, es funktioniert, wie ich es zuletzt machen wollte, danke Oliver :-)
Meine Makros waren auf deaktiv gestellt :-( Das neue Office war Schuld.
Gruß tinki
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
Schitt das war falsch, ich interessierte mich für diesen Beitrag, sorry, ich gelobe Besserung :-( Mache eine neue Anfrage auf. Sorry tinki
...