PDA

Vollständige Version anzeigen : zelle sperren nach eingabe


cs06
28.06.2006, 14:32
Hallo zusammen,

Ich habe eine vorgefertigte Excel Tabelle zum Eintragen von bestimmten Werten.
Wie lässt es sich realisieren, dass eine einzelne zelle nach eingabe eines wertes durch den Benutzer nicht mehr abgeändert werden kann?

Danke für die Auskunft!

Lumpensammler
28.06.2006, 15:50
Hallo, cs06,

per VBA entweder das Worksheet_Change-Ereignis nutzen und ggf. den Schutz der Tabelle auf die veränderten Zellen anpassen (Schutz aufheben, Zellen mit Inhalt schützen, Tabelle schützen) oder das Worksheet_SelectionChange-Ereignis zum Verhindern des Betretens von gefüllten Zellen nutzen. Eine Veränderung kann damit zwar behindert, aber nicht verhindert werden: wer das Vorgehen kennt, kann auch die Werte verändern.

Gruß
LS

djell
25.10.2011, 08:06
Hallo, hab dazu mal noch eine Frage!

Wie muss ich das in VBA Schreiben das nach der Eingabe eines Wertes in eine Zelle, diese Zelle Gesperrt wird, so das eine weitere Veränderung des Wertes nicht mehr möglich ist?

Danke schon mal für Eure Hilfe!

hary
25.10.2011, 08:45
Hallo Djell
teste mal. Tabellenname anpassen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target = "" Then
Sheets("Tabelle1").Unprotect 'hier ohne Passwort
Else
Target.Locked = True
Sheets("Tabelle1").Protect 'hier ohne Passwort
End If
End Sub

gruss hary

EarlFred
25.10.2011, 10:29
Hallo,

hatte das so verstanden:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Protect userinterfaceonly:=True
Target.Locked = True
End Sub

Dass Makros aktiviert sein müssen, damit das überhaupt so klappt, ist ja klar. Wie Du sicherstellst, dass diese bei einem User nicht deaktiviert sind, müsstest Du Dir noch überlegen...

Grüße
EarlFred

djell
25.10.2011, 13:45
So hab das mal getestet aber leider funktioniert das noch nicht ganz so wie ich das brauche.
Meine Tabelle ist mit einem Passwort geschützt! Bei der Ersten eingabe eines Wertes fragt er mich nach dem Passwort, das sollte er natürlich nicht tun, sondern das Passwort selber wiesen!
Ausserdem wolte ich das Makro mit einem Weiterem kompinieren, dann geht aber leider garnix mehr!
Er bleibt immer in der Zeile "Target.Locked = True" stehen!

Was kann ich da noch machen???

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 8 Then
If Target.Count = 1 Then

Range("I2") = Target

End If
End If

ActiveSheet.Protect userinterfaceonly:=True
Target.Locked = True

End Sub

hary
25.10.2011, 13:58
Hallo
Wenn schon geschuetzt, dan musst erst Schutzrausgenommen werden.
ActiveSheet.Unprotect "hier dein Passwort"
als erste Zeile.
gruss hary

djell
25.10.2011, 14:29
Danke nochmal für die Hilfe, hab geschaft! Funktioniert!

Hier der fertige Code bei mir:

Private Sub Worksheet_Change(ByVal Target As Range)

ActiveSheet.Unprotect "Test"

If Target.Column = 8 Then
If Target.Count = 1 Then

Range("I2") = Target
Target.Locked = True
End If
End If



ActiveSheet.Protect userinterfaceonly:=True

ActiveSheet.Protect "Test"
End Sub

EarlFred
27.10.2011, 15:29
Hallo,

der Blattschutz muss hierbei nicht erst entfernt werden, zweimal "protecten" bedeutet auch nicht doppelten Schutz und Events sollten zudem deaktiviert werden, wenn das Change-Event nicht im Kreis rennen soll:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 And Target.Count = 1 Then
Me.Protect Password:="test", userinterfaceonly:=True
Target.Locked = True
Application.EnableEvents = False
Me.Range("I2") = Target
Application.EnableEvents = True
End If
End Sub

Grüße
EarlFred

Kohanov__
20.11.2014, 10:53
Hallo zusammen,
möchte eingegebene Informationen sperren lassen, das Problem ist, ich möchte es so machen, dass die Informationen durch den Klick auf einen Button gesperrt werden.
Komme da einfach nicht weiter.
Grüße Robert