Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile sperren nach Eingabe in Zelle

Zeile sperren nach Eingabe in Zelle
25.05.2016 19:27:23
Steffi
Ein Hallo ins Forum :)
Ich suche mir grad schon seit Stunden nen Wolf - deshalb nun: Help!
Ich habe eine Exel Tabelle in der Arbeitszeiten festgehalten werden. Wenn eine Zeile geprüft wurde, soll das in der Spalte AU mit einem ü gekennzeichnet werden. Mit dieser Eingabe soll die Zeile zur Eingabe gesperrt werden (betrifft Bereich G:AK). Allerdings sind auch schon vorher bestimmte Zellen gesperrt - nämlich die, die Formeln enthalten.
Ich habe mir hier aus dem Forum auch schon was rauskopiert fürs VBE, bekomme aber nen Laufzeitfehler 1004 :(
Kann mir jemand helfen?

Anzeige

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 19:32:32
Hajo_Zi
nur wenige sehen Deine Datei und den Code. Da nur wenige auf Deinen Rechner schauen. Frage jemanden der neben Dir sitzt. Der sieht beides.

AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 19:50:29
Steffi
Oh Entschuldigung - mir war nicht bewußt, dass die datei gebraucht wird :(
Hab die Tabelle mal hochgeladen: https://www.herber.de/bbs/user/105795.xlsx
Hoffe, das ist richtig so.
Es soll also wenn in AU etwas eingegeben wird, der bereicht g:AK der entsprechenden Zeile gesperrt werden. Bei Löschen des ü sollte die Zeile wieder frei sein. Vielleicht sogar mit Password? geht das?
Und kopiert hatte ich:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 47 And Target.Value  "" Then
ActiveSheet.Unprotect
Target.EntireRow.Locked = True
ActiveSheet.Protect
End If
End Sub
Bin aber absoluter Anfänger - weiß nicht wirklich was steht *hüstel*

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 19:55:14
Hajo_Zi
eine Xlsx Datei kann kein Makro enthalten.
Ich vermute mal es wird die Zeile gesperrt.
ich hätte
If Target.Column = 47 And Target.Value = "ü" Then
geschrieben.
Gruß Hajo

AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 20:03:36
Steffi
das war ja auch eine xlsm Datei - die konnte ich irgendwie nur nicht hochladen.
Habe die Änderung gleich probiert. Hab das ins VBE eingetragen - gespecihert. Das Tabellenblatt geschützt und das ü eingetragen. Dann kam folgende Fehlermeldung:
Die Locked-Eingenschaften des Range Objektes kann nicht festgelegt werden.
Geh ich dann auf Debuggen markiert er die Zeile: Target.EntireRow.Locked = True
Gibt das Aufschluss?

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 20:10:07
Hajo_Zi
schreibe
Rows(Target.Row).Locked = False
ich baue nichts nach die Zeit hat schon jemand investiert.
Gruß Hajo

AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 20:25:18
Steffi
Scheinbar mach ich was falsch - es funktioniert einfach nicht.
Im Moment steht im VBE:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 47 And Target.Value = "ü" Then
ActiveSheet.Unprotect
Rows(Target.Row).Locked = False
ActiveSheet.Protect
End If
End Sub
Tut mir echt leid, habe heute das erste Mal über die Funktion VBE gelesen.
Und den ersten Inhalt aus dem Forum kopiert - da hatte ja vor Jahren schon mal jemand das Problem.
Hatte die Hoffnung so krieg ich das hin.....

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 20:32:18
Werner
Hallo Steffi,
versuch es mal damit.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 47 Then
If Target.Value = "ü" Then
ActiveSheet.Unprotect Password:="DeinPasswort"
With ActiveSheet
.Range(.Cells(Target.Row, 7), .Cells(Target.Row, 47)).Locked = True
.Protect Password:="DeinPasswort"
End With
ElseIf Target.Value = "" Then
With ActiveSheet
.Range(.Cells(Target.Row, 7), .Cells(Target.Row, 47)).Locked = False
.Protect Password:="DeinPasswort"
End With
End If
End If
End Sub
Beim Eintrag von ü in Spalte AU wird der Bereich von Spalte G bis Spalte AU gesperrt. AU solltest du auch mit sperren, sonst kann ja jeder dein ü wieder raus machen.
Wenn du den gesperrten Bereich wieder freigeben willst, dann den Blattschutz raus nehmen und in der Spalte AU das ü löschen, dann wird der Bereich in dieser Zeile wieder freigegeben und das Blatt wieder geschützt.
Gruß Werner

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 20:39:12
Steffi
Danke für den Tip mit der Zelle AU - stimmt natürlich.
habe jetzt dein Makro ins VBE kopiert.
gespeichert - Blatt geschützt - ü eingetragen
und bekomme wieder den Laufzeitfehler 1004 - Locked Eigenschaften für Rangeobjekt können nicht festgelegt werden.
klick ich auf Debuggen markiert er mir die Zeile:
.Range(.Cells(Target.Row, 7), .Cells(Target.Row, 47)).Locked = True
ist doch zum verzweifeln...

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
25.05.2016 21:36:00
Werner
Hallo Steffi,
mach mal den Blattschutz raus. Anschließend die Spalten G bis AU auswählen, rechte Maustaste, Format, Register Schutz und da dann den Haken bei gesperrt rausnehmen. Anschließend Blattschutz wieder rein.
Hier stellt sich jetzt noch die Frage, ob sich der Bereich mit den gesperrten Zellen, in denen sich Formeln befinden, mit dem Bereich, den du durch das Makro sperren willst überschneidet.
Sprich befinden sich im Bereich der Spalten G bis AU Zellen mit Formeln die schon gesperrt sind?
Gruß Werner

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
26.05.2016 08:13:25
Steffi
Hey Werner,
Tschudlige die Späte Antwort. War gestern schon im Bett *grins*
Also den Bereich g:AK hatte ich schon entsperrt - also den Haken entfernt. Die Formeln befinden sich im Bereich AL:AT.
Ich könnte die Spalte AU aber auch nach vorne ziehen - also auf den Platz AL setzen. Dann wäre da keine Formel zwischen.
Würde das helfen?
Dank Dir dolle für Deine Unterstützung
Liebe Grüße
Steffi

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
26.05.2016 10:24:08
Werner
Hallo Steffi,
ich habe es auf deine Datenstruktur abgeändert. Das mit dem wieder entsperren habe ich jetzt mit dem Doppelklickereignis gelöst.
Wenn er Bereich gesperrt ist (ü in AU) dann Doppelklick auf das ü der Zeile, die du wieder entsperren willst.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strPasswort As String
If Target.Column = 47 Then
If Target.Value = "ü" Then
strPasswort = InputBox("Bitte Passwort eingeben", "Passworteingabe")
If strPasswort = NullString Then Exit Sub
ActiveSheet.Unprotect Password:=strPasswort
With ActiveSheet
Target.Value = ""
.Range(.Cells(Target.Row, 7), .Cells(Target.Row, 37)).Locked = False
Target.Locked = False
.Protect Password:="DeinPasswort"
End With
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 47 Then
If Target.Value = "ü" Then
ActiveSheet.Unprotect Password:="DeinPasswort"
With ActiveSheet
.Range(.Cells(Target.Row, 7), .Cells(Target.Row, 37)).Locked = True
Target.Locked = True
.Protect Password:="DeinPasswort"
End With
End If
End If
End Sub
Gruß Werner

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
26.05.2016 18:38:36
Steffi
er bringt mir immer noch den Laufzeitfehler und markiert das Fettgedruckte:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strPasswort As String
If Target.Column = 47 Then
If Target.Value = "ü" Then
strPasswort = InputBox("Bitte Passwort eingeben", "Passworteingabe")
If strPasswort = NullString Then Exit Sub
ActiveSheet.Unprotect Password:=strPasswort
With ActiveSheet
Target.Value = ""
.Range(.Cells(Target.Row, 7), .Cells(Target.Row, 37)).Locked = False
Target.Locked = False
.Protect Password:="admin"
End With
End If
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 47 Then
If Target.Value = "ü" Then
ActiveSheet.Unprotect Password:="admin"
With ActiveSheet
.Range(.Cells(Target.Row, 7), .Cells(Target.Row, 37)).Locked = True
Target.Locked = True
.Protect Password:="Admin"
End With
End If
End If
End Sub

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
26.05.2016 18:43:30
Steffi
ich habe es einfach nochnmal versucht - dann ging es.
Aber.... der Doppelklick funktioniert nicht. Will heißen, ich krieg die Zeile nicht wieder entsperrt.
Tschuuuuldige *Augenklimper*

AW: Zeile sperren nach Eingabe in Zelle
26.05.2016 19:17:21
Steffi
Ich werd wahnsinnig - jetzt geht es wieder nicht.....

AW: Zeile sperren nach Eingabe in Zelle
26.05.2016 20:33:12
Werner
Hallo Steffi,
bereite mal dein Blatt vor.
1. Wenn du in AU schon ü drin hast dann alle raus
2. Bearbeiten - alles auswählen - Rechts klick im Blatt - formatieren - Schutz - Haken bei Zelle schützen raus
3. Spalten AL bis AT markieren - Recht klick - formatieren - Schutz - Haken bei Zelle schützen rein
4. Blattschutz rein
Ansonsten Beispielmappe bei der es nicht funktioniert hochladen. Kann die aber frühestens am Montag runter laden.
Gruß Werner

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
26.05.2016 20:57:56
Steffi
es geht leider nicht.... ich mach bestimmt nen ganz dussligen Fehler.
Hab die Datei hochgeladen https://www.herber.de/bbs/user/105813.xlsm
Montag ist Prima -bin ja dankbar, dass Du mir helfen willst.
Hab ein schönes Wochenende und DAAAAAAANKEEEE :)

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
26.05.2016 21:39:17
Michael
Hi zusammen,
ich hoffe, Werner ist nicht böse, wenn ich kurz einspringe...
Es gibt einige Sachen zu berücksichtigen:
- in Spalte AU sind verbundene Zellen, d.h. Target.Value produziert einen Fehler, der sich durch Target(1).Value vermeiden läßt.
- die "doubleclick" schreibt in die Tabelle, also wird die Change aufgerufen: deshalb Events erst mal disabled
Das Target.Locked = True hat sich bei mir auch widersetzt, warum auch immer. Komisch, weil wenn man in der Anweisung vorher den Bereich ausdehnt, geht es...
Allerdings ging bei mir der doubleclick nicht, wenn die Zelle in AU gesperrt war.
Und wenn man sie nicht sperrt, kann einfach der Wert überschrieben werden (allerdings werden dadurch die Zellen nicht entlockt, nur das doubleclick geht nicht mehr, weil kein ü mehr drinsteht).
Übrigens kann Steffis "unterste" Variante nicht gehen: einmal ist "Admin" groß, einmal klein geschrieben.
Ist immer ein Gefummel; Datei mit dem bisherigen Stand anbei: https://www.herber.de/bbs/user/105815.xlsm
Schöne Grüße,
Michael
P.S.: soll wirklich nur EINE Zeile gesperrt werden? Ich sperre im Moment mal beide, das ist der erste Parameter beim Resize.

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
27.05.2016 10:43:37
Werner
Hallo Michael,
na da mach dir mal keine Sorgen - nur gemeinsam sind wir stark.
Das mit den verbundenen Zellen wusste ich nicht, wobei da mal wieder die Frage auftaucht, braucht man das? Die machen doch eh nur Ärger.
Warum das Doppelklick-Ereignis bei dir nicht funktioniert? Bei mir ist beim händischen Setzen des Blattschutzes - Gesperrte Zellen auswählen und Nicht gesperrte Zellen auswählen - angehakt. Wenn ich den Haken bei - Gesperrte Zellen anwählen - raus mache, dann funktionier das Doppelklick-Ereignis bei mir auch nicht mehr.
Warum bei dir das Locked = True angemeckert wird kann ich auch nicht sagen, bei mir auf jeden Fall nicht.
Gruß Werner

Anzeige
AW: Zeile sperren nach Eingabe in Zelle
27.05.2016 11:40:04
Steffi
oooooooh - wie cool ist das denn? Ihr habt es geschafft! Es klappt.
Ich freu mich dolle :)
Das mit der Admin schreibweise hatte ich dann auch gemerkt - da hatte ich das hier aber schon hochgeladen. In der Datei hatte ich es aber geändert.
Jetzt spiel ich noch weiter mit der Datei rum. Hab noch einiges was ich da einbauen mag.
Und da ich noch einige andere Datein habe, die ich automatisieren möchte, lesen wir uns sicher seeeeeeehr bald wieder.
Erst einmal habt ihr mich sehr glücklich gemacht :) Danke Euch *freu*

Anzeige
AW: Danke für die Rückmeldung
27.05.2016 13:22:12
Werner
Hallo Steffi,
da gebührt der Dank wohl eher Michael weil meine Version bei dir ja wohl nicht funktioniert hat.
Trotzdem Danke für die Rückmeldung.
Gruß Werner

von mir auch, und @Werner
27.05.2016 14:29:35
mir
Hi Werner,
ich sehe das auch so mit "gemeinsam", da sind wir auf einer Linie.
Ansonsten hätte ich mich vielleicht nicht eingeschaltet, wenn Du nicht bereits Vorarbeit geleistet hättest: an vorhandenem Code herumzubasteln ist immer einfacher als ihn komplett zu entwickeln.
Also: eine Gemeinschaftsaktion im besten Sinne...
Schöne Grüße,
Michael

Anzeige
Kann ich die Zeile auch in Etappen sperren
29.05.2016 17:04:08
Steffi
Guten Abend:)
wie vorhergesagt.... ich stoß absolut an meine Grenzen.
Das jetzt bei eingabe des ü die Zeile gesperrt und wieder entsperrt wird, klappt ....... Aber, beim herumprobieren ist mir aufgefallen, dass ich die Einträge ja wöchentlich bearbeite....
Das heißt, ich müsste nach Freigabe nur die Zellen in der Spalte sperren, in denen zu dem Zeitpunkt ein Inhalt ist. In der Folgewoche tragend die Kollegen dann die entsprechenden Daten ein - am Ende der Woche geb ich dann wieder frei etc.
Hab eine Version versucht, in der die Zellen direkt nach Eintrag gesperrt werden. Das hab ich hinbekommen. Aber das Makro, dass dann nur die Zellen Fett werden, die zu dem Zeitpunkt inhalt haben.... das krieg ich nicht hin....
Habt ihr Ideen?

Anzeige
AW: Kann ich die Zeile auch in Etappen sperren
29.05.2016 18:51:47
Michael
Hi,
wenn Du uns das Makro zeigst, mit dem Du das machst?
Im Prinzip kannst Du doch im gleichen Rutsch "einfetten", und zwar am besten VOR dem Sperren, z.B.:
Zelle.Font.Bold = True
Zelle.Locked = true
Schöne Grüße,
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeile sperren nach Eingabe in Zelle


Schritt-für-Schritt-Anleitung

Um eine Zeile in Excel nach der Eingabe in einer bestimmten Zelle zu sperren, kannst du den folgenden VBA-Code verwenden. Dieser Code sperrt den Bereich G:AK, wenn in Spalte AU ein bestimmter Wert (in diesem Fall "ü") eingegeben wird.

  1. Öffne dein Excel-Dokument und gehe zum Visual Basic for Applications (VBA) Editor. Dies kannst du erreichen, indem du ALT + F11 drückst.

  2. Wähle das entsprechende Arbeitsblatt aus, für das du die Zeilen sperren möchtest.

  3. Füge den folgenden Code in das Codefenster des Arbeitsblatts ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 47 Then
            If Target.Value = "ü" Then
                ActiveSheet.Unprotect Password:="DeinPasswort"
                With ActiveSheet
                    .Range(.Cells(Target.Row, 7), .Cells(Target.Row, 37)).Locked = True
                    .Protect Password:="DeinPasswort"
                End With
            ElseIf Target.Value = "" Then
                ActiveSheet.Unprotect Password:="DeinPasswort"
                With ActiveSheet
                    .Range(.Cells(Target.Row, 7), .Cells(Target.Row, 37)).Locked = False
                    .Protect Password:="DeinPasswort"
                End With
            End If
        End If
    End Sub
  4. Speichere die Datei im .xlsm-Format, um sicherzustellen, dass die Makros funktionieren.

  5. Schütze das Arbeitsblatt, indem du auf "Überprüfen" > "Blatt schützen" gehst und ein Passwort vergibst.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler kann auftreten, wenn du versuchst, Zellen zu sperren, die bereits geschützt sind. Stelle sicher, dass der Blattschutz deaktiviert ist, bevor du die Sperrung vornimmst.

  • "Locked Eigenschaften für Rangeobjekt können nicht festgelegt werden": Dies bedeutet, dass die Zellen möglicherweise bereits gesperrt sind. Überprüfe, ob du die Zellen vorher entsperren musst.

  • Doppelklick funktioniert nicht: Stelle sicher, dass die Zelle in Spalte AU vor dem Doppelklick nicht gesperrt ist. Wenn sie geschützt ist, wird das Doppelklick-Ereignis nicht ausgelöst.


Alternative Methoden

Eine alternative Methode, um Zellen in Excel zu sperren, besteht darin, die Funktion Datenüberprüfung zu verwenden, um nur bestimmte Werte zuzulassen. Damit kannst du die Eingaben steuern, bevor die Zeilen gesperrt werden.

  1. Wähle die Zellen aus, die du schützen möchtest.
  2. Gehe auf "Daten" > "Datenüberprüfung".
  3. Wähle "Liste" und gib die erlaubten Werte ein.

Durch die Kombination von Datenüberprüfung und VBA kannst du die Eingaben besser steuern und die Zeilen effizient sperren.


Praktische Beispiele

Wenn du in der Spalte AU das Zeichen "ü" eingibst, wird die gesamte Zeile von G bis AK gesperrt. Um die Zeile wieder zu entsperren, lösche einfach das "ü" aus der Zelle in Spalte AU.

Ein Beispiel für die Verwendung des Doppelklicks zur Entsperrung:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 47 Then ' Spalte AU
        If Target.Value = "ü" Then
            ActiveSheet.Unprotect Password:="DeinPasswort"
            Target.Value = "" ' Löscht das ü
            With ActiveSheet
                .Range(.Cells(Target.Row, 7), .Cells(Target.Row, 37)).Locked = False
                .Protect Password:="DeinPasswort"
            End With
        End If
    End If
End Sub

Tipps für Profis

  • Passwortschutz: Verwende ein starkes Passwort, um deine Excel-Datei zu schützen. Achte darauf, die Schreibweise konstant zu halten, um Fehler zu vermeiden.

  • Kopfzeilen sperren: Wenn du die Kopfzeilen in deiner Tabelle nicht bearbeiten möchtest, kannst du diese ebenfalls sperren, indem du ihre Zellen vor dem Schützen des Blattes auswählst und die Sperre aktivierst.

  • Testen der Makros: Teste deine Makros in einer Kopie deiner Datei, um Datenverluste zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich verhindern, dass andere Benutzer auf die gesperrten Zellen zugreifen?
Du kannst den Blattschutz aktivieren, um sicherzustellen, dass gesperrte Zellen nicht bearbeitet werden können.

2. Kann ich mehrere Zeilen gleichzeitig sperren?
Ja, du kannst den Code so anpassen, dass er mehrere Zeilen oder Bereiche gleichzeitig sperrt, indem du die Zellreferenzen entsprechend änderst.

3. Wie speichere ich die Datei mit Makros?
Speichere die Datei im .xlsm-Format, um sicherzustellen, dass die Makros erhalten bleiben und funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige