Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
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

Zellen sperren nach Eingabe

Zellen sperren nach Eingabe
21.04.2016 08:27:40
Rico

Hallo zusammen!
Im Forum habe ich fast alles gefunden, wonach ich gesucht habe. Allerdings ist eine Frage noch offen geblieben und ich hoffe, dass mir jemand helfen kann. Also:
Ich habe eine Datei, in der Werte eingeben werden. Diese sollen nachträglich nicht mehr geändert werden dürfen. Um das zu bewerkstelligen, habe ich folgenden Code eingefügt:
Sub Blattschutz_Eingabe()
'sobald ein Wert in eine beliebige Zelle eingegeben wurde, wird diese gesperrt
'Ausnahme: "0" kann geändert werden
Dim Zelle As Object
On Error Resume Next
With ActiveSheet
.Unprotect
.Cells.Locked = False
For Each Zelle In .UsedRange
If Zelle <> 0 Then Zelle.Locked = True
Next Zelle
.Protect
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Call Blattschutz_Eingabe
End Sub
Durch das Makro wird das Blatt geschützt. Allerdings kann man diesen Blattschutz relativ leicht aufheben. Ich suche daher eine Möglichkeit, ein Passwort zu hinterlegen.
Mein Versuch, mit .Protect Password = „MeinPasswort“ war leider nicht erfolgreich.
Eine Beispieldatei habe ich angehängt. Für Eure Hilfe bedanke ich mich im Voraus!
Rico
https://www.herber.de/bbs/user/105125.xlsm

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

Betreff
Datum
Anwender
Anzeige
AW: Zellen sperren nach Eingabe
21.04.2016 08:41:39
Werner
Hallo Rico,
Password:="DeinPasswort"
Gruß Werner

AW: Zellen sperren nach Eingabe
21.04.2016 09:10:00
Rico
Hallo Werner,
danke für die Antwort. An welcher Stelle muss ich denn den Code einfügen? Meine Versuche waren leider erfolglos...
Gruß Rico

AW: Zellen sperren nach Eingabe
21.04.2016 09:24:47
Werner
Hallo Rico,
Sub Blattschutz_Eingabe()
Dim Zelle As Range
With ActiveSheet
.Unprotect Password:="DeinPasswort"
.Cells.Locked = False
For Each Zelle In .UsedRange
If Zelle <> 0 Then Zelle.Locked = True
Next Zelle
.Protect Password:="DeinPasswort"
End With
End Sub
Gruß Werner

AW: Zellen sperren nach Eingabe
21.04.2016 10:01:51
Rico
Hallo Werner,
vielen Dank! Ich hatte bei meinem ersten Versuch nicht an "unprotect" gedacht. Jetzt funktioniert es!
Gruß Rico

Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T
21.04.2016 10:22:50
Werner

AW: Gerne u. Danke für die Rückmeldung. o.w.T
21.04.2016 15:45:34
Marc
Guten Tag, ich häng mich hier mal an, da ich ein ähnlich gelagertes Problem habe.
Es geht um eine Teilnehmerliste, die derzeit nur umständlich bearbeitet werden kann.
Arbeitsmappe ist geschützt, dazu jedes einzelne Blatt mit PW. Jedes Blatt stellt einen einzelnen Termin im Jahr 2016 dar. Derzeit ist es erforderlich nach schriftlicher Anmeldung des Tln per Email, den Blattschutz zu gewünschtem Termin aufzuheben, Tln eintragen und wieder schützen. Also 3x ist die Eingabe des PW erforderlich. Um die Termine und Informationen einsehen zu können, benötigen die Tln (Lese-)Zugriff auf die Datei.
Ich hätte gerne eine passwortgeschützte Arbeitsmappe mit passwortgeschützten Blättern, in denen nur bestimmte leere Zellen, zur Eintragung durch die Tln selbst, freigegeben sind. Diese sich jedoch nach dem Eintrag sperren sollen und dem Passwortschutz unterliegen und nur durch mich geändert werden können.
Ich hoffe, es ist verständlich, worauf ich hinaus möchte und hoffe auf Eure Unterstützung.

Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T
22.04.2016 10:01:46
Werner
Hallo Marc,
als erstes in den entsprechenden Tabellenblättern die Bereiche markieren, die bearbeitet werden dürfen. Dort dann Zellen formatieren - Schutz - Haken bei gesperrt raus. Anschließend das Blatt mit einem Blattschutz versehen.
Für dein Anliegen, dass die bearbeitbaren Zellen bei Eingabe gesperrt werden dann folgenden Code in ein allgemeines Modul:
Option Explicit
Public Sub Zelle_sperren()
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = ActiveSheet.Range("B2:D14") 'Bereich in dem sich der Code auswirkt -anpassen-
ActiveSheet.Unprotect Password:="Passwort" 'Passwort anpassen
For Each Zelle In Bereich
If Not IsEmpty(Zelle) Then
Zelle.Locked = True
End If
Next Zelle
ActiveSheet.Protect Password:="Passwort" 'Passwort anpassen
End Sub
Dann noch folgenden Code

ins Code-Modul jedes Tabellenblattes auf dem sich der Code auswirken soll.

Rechtsklick auf den entsprechenden Tabellenblattreiter - Code anzeigen - Code rechts ins Codefenster kopieren.
Private Sub Worksheet_Change(ByVal Target As Range)
Call Zelle_sperren
End Sub
Gruß Werner

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige