Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1140to1144
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

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.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige