Anzeige
Archiv - Navigation
1412to1416
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

belegte Zellen beim Speichern schützen

belegte Zellen beim Speichern schützen
09.03.2015 22:14:36
Volker
Hallo Zusammen,
mit meinem Projekt (Zeiterfassung) bin ich jetzt soweit durch. Hat für einen Anfänger ne Menge, aber auch eine Menge Spaß bedeutet. Man lernt immer dazu...
Mein letzte Problem: Ich habe in dem Eingabeblatt natürlich neben den vom Blattschutz bereits geschützten Bereichen einen Eingabebereich. Hier werden im Laufe der Zeit eine Menge Daten erfasst werden und diese werden von verschiedene Personen eingegeben, d.h. also Ärger vorprogrammiert.
Wie kann ich es erreichen, dass beim Speichern des Dokumentes die vom jeweiligen letzten Nutzer eingegeben Daten beim nächsten Öffnen der Datei gesperrt sind.
Ich habe ne Menge gegoogelt, es gibt auch eine Vielzahl von Anweisungen. Leider bin ich entweder nicht in der Lage, oder die Scripte funktionieren nicht. Eines habe ich zu Laufen gebracht, was allerdings eine sofortige Sperrung der Zelle verursacht hat, was bei Korrektureinträgen nicht hilfreich ist.
Folgendes Script habe ich auch gefunden, bin aber leider nicht in der Lage es einzubinden. Grundsätzlich dürfte es genau das sein, was ich brauche. Wie und wo muss ich das Script einbauen, damit es funktioniert? Welche Rolle spielt in diesem Fall, ob der Blattschutz aktiviert ist oder in welcher Reihenfolge er aktiviert werden muss?
Hier das Script:
Sub Bernd()
Dim rngZelle As Range
With Worksheets("Tabelle1")
.Unprotect "Password"
For Each rngZelle In .Range("B2:D100")
If rngZelle.Value  "" Then rngZelle.Locked = True
Next rngZelle
.Protect "Password"
End With
End Sub

Welche Anpassungen muss ich mit Ausnahme des zu definierenden Bereiches, der Arbeitsblattbezeichnung (hier: Tabelle1) vornehmen? Muss in der ersten Zeile etwas verändert werden?
Sorry, für mein Nerven, aber bereits jetzt besten, besten Dank!
Volker

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: belegte Zellen beim Speichern schützen
10.03.2015 06:51:17
Hajo_Zi
Hallo Volker,
ich würde nicht speichern benutzen, der Benutzer könnte ja zwischendrin auch speichern.
Benutze
Private Sub Workbook_BeforeClose(Cancel As Boolean)
unter DieseArbeitsmappe.

Ergänzung zu Hajo
10.03.2015 08:00:33
RPP63
Hallo!
Bei .Protect gibt es den Parameter UserInterfaceOnly, dann brauchst Du nicht "unprotecten".
Eine For Each-Schleife ist zwar flott (und reicht in Deinem Fall wohl auch), händische Einträge können aber auch "in einem Rutsch" bearbeitet werden:
With Worksheets("Tabelle1")
.Protect "Password", UserInterfaceOnly:=True
.Range("B2:D100").SpecialCells(xlCellTypeConstants, 23).Locked = True
End With
Gruß Ralf

Anzeige
AW: Ergänzung zu Hajo
10.03.2015 19:29:07
Volker
Guten Abend Zusammen!
Danke für die Antworten, komme der Sache näher.
Ich hatte aber hier im Archiv noch ein altes script gefunden, was ich persönlich super finde, da noch eine Warnmeldung kommt:
Sript der Arbeitsmappe:
Sub Schutz()
ActiveSheet.Protect ("Passwort"), DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Sub Schutzweg()
ActiveSheet.Unprotect ("Passwort")
End Sub

Sub Zellen_schützen()
Dim Zelle As Range
For Each Zelle In Range("E18:J100")
If Zelle.Value  "" Then
Zelle.Locked = True
Zelle.FormulaHidden = True
End If
Next Zelle
End Sub

Script im Modul:
Sub Schutz()
ActiveSheet.Protect ("Passwort"), DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub

Sub Schutzweg()
ActiveSheet.Unprotect ("Passwort")
End Sub

Sub Zellen_schützen()
Dim Zelle As Range
For Each Zelle In Range("E18:J100")
If Zelle.Value  "" Then
Zelle.Locked = True
Zelle.FormulaHidden = True
End If
Next Zelle
End Sub
Funktionierte erst nicht, ich erhielt einen Laufzeitfehler, glaube aber herausgefunden zu haben, woran das liegt. Kann es sein, dass der Fehler auftaucht, wenn ich verbundene Zellen anspreche? Die Zellen E bis I sind normal, die Zellen J-O sind zeilenweise verbunden. Wenn ich nur E-I eingebe, funktionert das Script, zumindst was ich beobachten kann.
Frage 1: Gibt es eine Möglichkeit, die verbundenen Zellen anzusprechen, ich würde ungerne die Tabelle ändern, da die Länge dieses Feldes (J-O) optisch gewünscht ist. Was müsste ich am Code ändern?
Frage 2: Ich denke, die Scripte sprechen die ganze Arbeitsmappe an, Kann ich dies auf ein Arbeitsblatt begrenzen?
Nochmals allerbesten Dank. Ihr seid die Größten und habt meine Bewunderung.
Volker
Userbild

Anzeige
AW: Ergänzung zu Hajo
11.03.2015 17:40:45
Volker
Wenn ich das, was ich beim stöbern gefunden habe, dürfte es ja in der Tat mit den verbundenen Zellen zusammenhängen. Hier finde ich aber unterschiedliche Meinungen, die einen sagen, um Gottes Willen, Todsünde und nicht machbar, andere schreiben kein Problem.
Leider weiß ich nicht - sofern die Angelegenheit zu regeln ist - wie das zu handhaben wäre.
Könnt Ihr mir eine Tendenz geben, ob ich die Tabelle in der alten Form beibehalten kann und mir einen Lösungsvorschlag für das script aufzeigen, oder muss ich doch die Tabelle ändern, was für mich persönlich doof wäre.
Besten Dank und viele Grüße,
Volker

Anzeige
verbundene Zellen
12.03.2015 07:08:41
Hajo_Zi
Hallo Volker,
Du kannst fast jeden Code an verbundene Zellen anpassen, ist nur eine Frage des Aufwandes.
Ich lehne verbunden Zellen ab.
Gruß Hajo

AW: verbundene Zellen
12.03.2015 11:15:46
Volker
Hallo Hajo,
danke für die Info. Ist zwar schade, aber eine eine eindeutige Antwort, denn es scheint ja gute Gründe zu geben, wenn Du dich so deutlich positionierst.
Dann weiß ich, was ich zu tun habe.
Danke und Grüße,
Volker

AW: belegte Zellen beim Speichern schützen
10.03.2015 19:40:06
Volker
Hier noch ein screen von der Tabelle
Userbild
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige