Zelle nach Eingabe Automatisch sperren
#1
Hallo zusammen,

ich habe mir eine Tabelle gebaut und dort soll folgende Funktion hinterlegt sein:

Trägt jemand was in der Zelle ein, soll die Zelle gesperrt werden.

dies möchte ich mit einem Makro ermöglichen und habe mir das wie folgt geschrieben:

Private Sub Worksheet_Change(ByVal Target As Range)
Tabelle1.Unprotect "1234"
If VBA.IsEmpty(Target) Then
    Target.Locked = False
    Else
    Target.Locked = True
End If
Tabelle1.Protect "1234"

End Sub

nun ist es so, dass hier das Debug Fester erscheint mit der Meldung: Die Locked-Eigenschaft des Range-Objektes kann nicht festgelegt werden.

Wenn ich den Debugger öffne ist die Zeile Target.Locked = True gelb hinterlegt.

Was das komische ist, trage ich was in der Zelle ein erscheint die Fehlermeldung, aber wenn ich den Inhalt lösche dann wird die Zelle gesperrt.

hätte jemand einen Tipp für mich wo mein Fehler liegt ?

Danke für eure Hilfe
Top
#2
Hi,

kann ich nicht nachvollziehen: bei mir läuft dein Makro wie (offensichtlich) gewünscht.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#3
Nun habe ich den Fehler selbst gefunden.

Es funktioniert nicht wenn Zellen verbunden sind.

dann wäre meine frage wie müsste ich das Makro abändern damit es auch bei verbundenen Zellen Funktioniert?
Top
#4
... dann hebe die Zellverknüpfung auf. Google mal nach "verbundene Zellen" und Probleme damit.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top
#5
Moin,

in die Fachfrage werde ich mich mangels ausreichenden Kenntnissen nicht einmischen. Was die verbundenen Zellen anbelangt, kann ich dir aber nur raten, diese aufzulösen. Zum besseren Verständnis warum, hier etwas Lesestoff: https://www.clever-excel-forum.de/Thread...oder-Segen
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#6
Ok Aufheben wäre eine Lösung allerdings müsste ich dann das Makro auf eine Range beschränken.

A:12 bis Z:30

wäre dies möglich ?
Top
#7
Hi,

setze zu Beginn deines Macros:

PHP-Code:
If Application.Intersect(TargetRange("A12:Z30")) Is Nothing Then Exit Sub 
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste