Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 11:16:26
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenblatt nach Eingaben sperren/schützen

Tabellenblatt nach Eingaben sperren/schützen
Matthias
Ich habe eine Excel-Datei, die Tabellenblätter für einen Monat enthält.
Auf den Tabellenblättern werden täglich Daten eingetragen. Für jeden Tag gibt es ein Blatt.
Auf jedem Blatt gibt es geschützte Zellen, die Formeln enthalten. Auf jedem Blatt gibt es ungeschützte Zellen, um dort Zahlen eintragen zu können.
Ich möchte nun Folgendes:
- Das Tagesblatt soll mit den benötigten Daten gefüllt werden.
- Wenn alle Daten in Laufe des Tages eingegeben sind, soll das Blatt von einer Person kontrolliert werden.
- Sind die Zahlen o.k., so möchte ich das aktive Tabellenblatt für weitere Eingaben sperren. Im Laufe des Monats soll das für jedes Blatt erfolgen.
Kann das über VBA erfolgen? „Blattschutz“?
Das Skript sollte einem Button in der Symbolleiste zugewiesen werden, so dass beim Anklicken des Buttons immer das aktive Blatt komplett gesperrt / geschützt wird.
Anzeige
AW: Tabellenblatt nach Eingaben sperren/schützen
09.03.2010 11:47:28
Matthias
Vielen Dank an beide für die Hilfe.
Ich habe in eine persönliche Makroarbeitsmappe (personl.xls) das unten Aufgelistete als Modul eingefügt.
Nach Ausführen der Prozedur prcCreateButton() war der gewünschte Button in der Menüleiste verfügbar.
Durch Anklicken des Button erhalte ich den gewünschten Blattschutz, der nur mit einem Passwort wieder aufgehoben werden kann.
Mal schauen wie es in der täglichen Praxis läuft.
Option Explicit
Option Private Module
Public Sub prcCreateButton()
Dim myCommandBar As CommandBar
Dim myCommandBarButton As CommandBarButton
Set myCommandBar = Application.CommandBars("Worksheet Menu Bar")
Set myCommandBarButton = myCommandBar.Controls.Add(Type:=msoControlButton, _
Before:=myCommandBar.Controls.Count + 1, Temporary:=False)
With myCommandBarButton
.BeginGroup = True
.Caption = "Freigabe"
.FaceID = 51
.OnAction = "prcSperren"
.Style = msoButtonIconAndCaption
.TooltipText = "Freigabe durch XXX"
.Tag = "Freigabe"
End With
Set myCommandBar = Nothing
Set myCommandBarButton = Nothing
End Sub

Public Sub prcSperren()
MsgBox "Freigabe"
ActiveSheet.Unprotect
Cells.Locked = True
ActiveSheet.Protect "Passwort"
End Sub

Anzeige
Der Sinn der ganzen Aktion ...
09.03.2010 19:35:00
Ramses
Hallo
... erschliesst sich wohl nicht mal dem Anwender.
Das ganze ist doch nutzlos weil es nicht funktioniert.
Gruss Rainer
AW: Der Sinn der ganzen Aktion ...
10.03.2010 06:51:53
Matthias

... erschliesst sich wohl nicht mal dem Anwender.
Das ganze ist doch nutzlos weil es nicht funktioniert.

Warum nutzlos?
Was funktioniert nicht?
Ist meine Beschreibung möglicherweise missverständlich?
Ich habe es doch ausprobiert und es hat wie gewünscht funktioniert.
1. Sub prcCreateButton() im VBA-Editor ausgeführt --> Button wurde in der Menüleiste angelegt.
2. VBA-Editor wieder geschlossen
3. Durch Anklicken des Buttons wird das vorher teilweise geschützte aktive Tabellenblatt vollständig mit
einem Blattschutz mit Passwort versehen.
Wo ist nun der Fehler? Was ist nutzlos?
Anzeige
AW: Der Sinn der ganzen Aktion ...
10.03.2010 17:26:40
Ramses
Hallo
Vielleicht ist das eher ein Verständnisproblem von mir.
Deine Dateien haben offensichtlich zuerst einen Blattschutz ohne Passwort. D.h. jeder kann hier den Blattschutz problemlos entfernen und/oder ein anderes Passwort setzen. Sollte das mal geschehen, dann funktioniert dein Makro nicht mehr.
Wurde das Passwort deinerseits mit dem Makro dann mal gesetzt, kommt es bei einem weiteren Aufruf zu einem Fehler, weil das "unprotect" dann nicht funktioniert.
Was passiert denn, wenn man "versehentlich" den Button drückt bevor man Eingaben gemacht hat ?
Ein "entschützen" und Dateneingabe ist dann nicht mehr möglich, ebensowenig wie Änderungen der Eingaben.
Gruss Rainer
Anzeige
AW: Der Sinn der ganzen Aktion ...
11.03.2010 15:51:27
Matthias
Richtig. Das Tabellenblatt hat zunächst einen Blattschutz ohne Passwort -- um zu verhindern, dass Formeln versehentlich gelöscht bzw. verändert werden.
Auch richtig ist, dass jemand vorsetzlich über die Menüfunktion am Blattschutz herumspielen könnte. Das will ich aber nicht unbedingt unterstellen.
Damit ein versehentliches Drücken des Buttons ohne Folgen bleiben kann, habe ich das Makro um Meldungsfenster (MsgBox) erweitert und der Vorgang könnte dann noch abgebrochen werden.
Public Sub prcSperren()
Dim Mldg, Stil, Titel, Antwort, Text1
Mldg = "ACHTUNG!!! Nach dem Bestätigen von [Ja] sind keine Eingaben mehr möglich."
Stil = vbYesNo + vbExclamation + vbDefaultButton2
Titel = "Freigabe durch XXX"
Antwort = MsgBox(Mldg, Stil, Titel)
If Antwort = vbYes Then
ActiveSheet.Unprotect
Cells.Locked = True
ActiveSheet.Protect "frei56"
ActiveWorkbook.Save
MsgBox "Blatt wurde gesperrt"
Else
MsgBox "Blatt wurde nicht gesperrt"
End If
End Sub

Wurde das Passwort deinerseits mit dem Makro dann mal gesetzt, kommt es bei einem weiteren Aufruf zu einem Fehler, weil das "unprotect" dann nicht funktioniert.

Ja, leider.
Könnte man das verhindern?
Im Normalfall sind bestimmte / festgelegte Zellen für Dateneingaben vorgesehen - z.B. B12.
Kann man abfragen ob Zellen geschützt oder ungeschützt sind ("Gesperrt" formatiert / nicht "Gesperrt" formatiert)?
Bei einem bereits vollständig geschützten Blatt wäre ja auch meine Zelle B12 "Gesperrt" formatiert. Dann müsste das Makro auf die bereits bestehend MsgBox "Blatt wurde nicht gesperrt" verzweigen.
Ich hoffe, ich habe mich verständlich ausgedrückt.
Danke für weitere Hilfe(n).
Anzeige
AW: Der Sinn der ganzen Aktion ...
11.03.2010 16:45:35
Ramses
Hallo
die einfachste Variante in diesem Zusammenhang wäre, alle deine Zellen zu markieren wo Eingaben getätigt werden sollen und diesem markierten Bereich dann einen Namen zu vergeben, z.B. "rngEingabe"
Dann kannst du mit einem kleinen Makro den Bereich wieder zurücksetzen
Sub Reset_Protect()
ActiveSheet.Unprotect "DeinPasswort"
Range("rngEingabe").Locked = False
ActiveSheet.Protect "DeinPasswort"
End Sub
Nun sind die Zellen wieder freigeschaltet wo Eingaben getätigt werden können
Das Makro kannst du dann analog dem ersten Button in deine Commandbar einbinden
Gruss Rainer
Anzeige
Unprotect - Cells.Locked = True - Protect
03.03.2010 15:39:50
Matthias
Hallo
ActiveSheet.Unprotect "Passwort"
Cells.Locked = True
ActiveSheet.Protect "Passwort"
und dann einer Schaltfläche zuweisen
Gruß Matthias
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblätter in Excel schützen und sperren


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.
  3. Erstelle den Button:

    • Füge den folgenden Code in das Modul ein, um einen Button in der Menüleiste zu erstellen:
      Public Sub prcCreateButton()
      Dim myCommandBar As CommandBar
      Dim myCommandBarButton As CommandBarButton
      Set myCommandBar = Application.CommandBars("Worksheet Menu Bar")
      Set myCommandBarButton = myCommandBar.Controls.Add(Type:=msoControlButton, _
      Before:=myCommandBar.Controls.Count + 1, Temporary:=False)
      With myCommandBarButton
         .BeginGroup = True
         .Caption = "Freigabe"
         .FaceID = 51
         .OnAction = "prcSperren"
         .Style = msoButtonIconAndCaption
         .TooltipText = "Freigabe durch XXX"
         .Tag = "Freigabe"
      End With
      Set myCommandBar = Nothing
      Set myCommandBarButton = Nothing
      End Sub
  4. Schütze das aktive Blatt:

    • Füge den nachfolgenden Code ein, um das aktive Blatt zu schützen:
      Public Sub prcSperren()
      Dim Mldg, Stil, Titel, Antwort
      Mldg = "ACHTUNG!!! Nach dem Bestätigen von [Ja] sind keine Eingaben mehr möglich."
      Stil = vbYesNo + vbExclamation + vbDefaultButton2
      Titel = "Freigabe durch XXX"
      Antwort = MsgBox(Mldg, Stil, Titel)
      If Antwort = vbYes Then
         ActiveSheet.Unprotect
         Cells.Locked = True
         ActiveSheet.Protect "DeinPasswort"
         ActiveWorkbook.Save
         MsgBox "Blatt wurde gesperrt"
      Else
         MsgBox "Blatt wurde nicht gesperrt"
      End If
      End Sub
  5. Teste das Makro:

    • Schließe den VBA-Editor und teste das Makro, indem du auf den neu erstellten Button klickst.

Häufige Fehler und Lösungen

  • Fehler: Blattschutz lässt sich nicht aufheben:

    • Stelle sicher, dass du das richtige Passwort eingibst. Wenn das Passwort falsch ist, wird der Schutz nicht aufgehoben.
  • Fehler: Makro funktioniert nicht:

    • Überprüfe, ob das Makro korrekt im Modul eingefügt wurde und dass du die richtige Excel-Version verwendest, die VBA unterstützt.

Alternative Methoden

  • Manuelles Schützen:

    • Du kannst auch das Tabellenblatt manuell schützen, indem du auf Überprüfen > Blatt schützen klickst. Hier kannst du ein Passwort festlegen.
  • Bereichsnamen verwenden:

    • Markiere alle Zellen, in denen Eingaben erlaubt sein sollen, und vergebe einen Namen (z.B. rngEingabe). Mit einem Makro kannst du dann den Schutz nur für diesen Bereich aufheben.

Praktische Beispiele

  • Beispiel für ein einfaches Makro:

    Sub Reset_Protect()
      ActiveSheet.Unprotect "DeinPasswort"
      Range("rngEingabe").Locked = False
      ActiveSheet.Protect "DeinPasswort"
    End Sub
  • Benutzung des Makros:

    • Dieses Makro hebt den Schutz auf und erlaubt Eingaben in den definierten Bereich. Es kann einem Button zugewiesen werden, ähnlich wie das Blattschutz-Makro.

Tipps für Profis

  • Passwort sicher aufbewahren:

    • Verwende ein sicheres Passwort, um unbefugten Zugriff zu verhindern. Achte darauf, dass das Passwort nicht leicht zu erraten ist.
  • Verwendung von VBA:

    • Nutze VBA, um komplexe Aufgaben zu automatisieren, wie das Sperren und Entsperren von Zellen basierend auf bestimmten Bedingungen.

FAQ: Häufige Fragen

1. Wie kann ich ein Tabellenblatt in Excel schützen?
Du kannst ein Tabellenblatt schützen, indem du auf Überprüfen > Blatt schützen klickst und ein Passwort angibst.

2. Kann ich bestimmte Zellen ungeschützt lassen?
Ja, du kannst das Layout so einstellen, dass bestimmte Zellen ungeschützt bleiben. Markiere die Zellen, die ungeschützt bleiben sollen, und gehe zu Format > Zellen > Schutz, um die Option "Gesperrt" zu deaktivieren.

3. Wie kann ich den Blattschutz wieder aufheben?
Um den Blattschutz aufzuheben, gehe zu Überprüfen > Blattschutz aufheben und gib das Passwort ein, das du zuvor festgelegt hast.

4. Funktioniert das in allen Excel-Versionen?
Die VBA-Methoden funktionieren in den meisten neueren Excel-Versionen. Stelle sicher, dass deine Version VBA unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige