Anzeige
Archiv - Navigation
1912to1916
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
In Abhängigkeit von Wert, Zeilen sperren
07.01.2023 14:42:54
Wert,
Hallo,
ich habe folgendes Anliegen.
Ich habe eine Tabelle (im Tabellenblatt1), die durch eine UserForm gefüllt werden kann. Nun würde ich gerne die Funktion hinzufügen, dass wenn der Wert "Ja" in eine Zelle in der Spalte R eingetragen wird, die entsprechende Zeile gesperrt wird und nur über ein Passwort überschrieben werden kann, bzw. der Schreibschutz aufgehoben werden kann.
Kurzer Hintergrund, damit man sich es eventuell besser vorstellen kann.
Derjenige, der den Wert "Ja" in die Zellen schreibt, überprüft die Richtigkeit der Einträge in der Zeile. Sind diese Richtig sollen sie nicht mehr verändert werden können.
Das ganze erstreckt sich über 52 Spalten (B bis BA) und es können bis zu 600 Einträge in die Tabelle eingefügt werden, also 600 Zeilen.
Mit dem Folgenden Code (den ich über einen Bekannten bekommen habe) funktioniert es auch schon mehr oder weniger. ABER es dauert ewig, bis er überprüft hat, ob der Definierte Wert drinsteht oder nicht.

Private Sub Worksheet_ change(ByVal Target As Range)
Dim rngLock As Range, Zelle As Range
Set rngLock = Range("R1:R600")
For Each Zelle In rngLock
If Zelle = "" Then
ActiveSheet.Unprotect "XXX"
ActiveSheet.Range(Cells(Zelle.Row, Zelle.Column - 18), Cells(Zelle.Row, Zelle._ Column + 52)).Locked = False
ActiveSheet.Protect "XXX"
Else
If Zelle = "Ja" Then
Activesheet.Unprotect "XXX"
Activesheet.Range(Cells(Zelle.Row, Zelle.Column - 18), Cells(Zelle.Row, Zelle._ Column + 52)).Locked = True
Column + 6)).Locked = True
ActiveSheet.Protect "XXX"
End It
End if
Next
End Sub
Mit bisherigen Beiträgen konnte ich leider nichts anfangen... Wäre um Hilfe sehr dankbar!
Gruß
Tobi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Abhängigkeit von Wert, Zeilen sperren
07.01.2023 15:14:32
Wert,
Hallo Tobi,
teste mal:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngLock As Range, Zelle As Range
Set rngLock = Intersect(Target, Range("R1:R600"))
If Not rngLock Is Nothing Then
Call Unprotect(Password:="XXX")
For Each Zelle In rngLock
If Zelle.Text = "Ja" Then
Range(Cells(Zelle.Row, 1), Cells(Zelle.Row, 53)).Locked = True
Else
Range(Cells(Zelle.Row, 1), Cells(Zelle.Row, 53)).Locked = False
End If
Next
Call Protect(Password:="XXX")
Set rngLock = Nothing
End If
End Sub
Gruß
Nepumuk
AW: In Abhängigkeit von Wert, Zeilen sperren
07.01.2023 17:29:31
Wert,
Hi Nepumuk,
vielen Dank für deine schnelle Hilfe!
Leider klappt das noch nicht :/
Ich hab deinen Code in die "Tabelle1" Kopiert. Nun bekomme ich jedoch die Fehlermeldung "Fehler beim Kompilieren: Sub oder Function nicht definiert" und es wir diese Codezeile markiert:

"Private Sub Worksheet_Change(ByVal Target As Range)"
. Eine Idee wie man das löst?
Eine Sache habe ich bei meiner Problembeschreibung auch vergessen noch zu erwähnen, was wahrscheinlich auch Relevanz hat.
Diese Überprüfung auf den Wert "Ja" müsste so erfolgen, dass wenn die Excel geschlossen und von jemand anderes wieder geöffnet wird, die entsprechenden Zeilen mit dem Wert "Ja" gesperrt sind. Also quasi eine Routine, oder?
Viele Grüße
Tobi
Anzeige
AW: In Abhängigkeit von Wert, Zeilen sperren
07.01.2023 17:44:41
Wert,
Hallo Tobi,
kann ich nicht nachvollziehen, ich habe die Routine getestet. Die Zeile bleibt gesperrt, wenn Excel geschlossen wird. Ich könnte höchstens die Mappe im Makro zwangsweise Speichern, wenn eine Änderung vorgenommen wird.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngLock As Range, Zelle As Range
Set rngLock = Intersect(Target, Range("R1:R600"))
If Not rngLock Is Nothing Then
Call Unprotect(Password:="XXX")
For Each Zelle In rngLock
If Zelle.Text = "Ja" Then
Range(Cells(Zelle.Row, 1), Cells(Zelle.Row, 53)).Locked = True
Else
Range(Cells(Zelle.Row, 1), Cells(Zelle.Row, 53)).Locked = False
End If
Next
Call Protect(Password:="XXX")
Call ThisWorkbook.Save
Set rngLock = Nothing
End If
End Sub
Gruß
Nepumuk
Anzeige
AW: In Abhängigkeit von Wert, Zeilen sperren
07.01.2023 17:52:09
Wert,
Hallo Tobi,
lass die " weg.
Und entsperre zuerst alle Zellen manuell.
Gruß Gerd
AW: In Abhängigkeit von Wert, Zeilen sperren
07.01.2023 18:33:02
Wert,
Hallo Nepumuk,
mega! Es funktioniert 1a!!!
Sorry... Hab beim Kopieren aus versehen ein Buchstaben reingeschrieben, weswegen der Code dann natürlich nicht funktioniert.....
Vielen Dank für deine Hilfe!!!
Gruß
Tobi
AW: In Abhängigkeit von Wert, Zeilen sperren
07.01.2023 19:41:47
Wert,
Dein Code kann so gar nicht gelaufen haben, denn "Zelle.Column - 18" ergibt 0 und Spaltennummer 0 gibt es nicht.
Und "Column + 6)).Locked = True" ergäbe einen Fehler.
Hier noch eine Version, die aber ab Spalte B sperrt:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngLock, Zelle
Set rngLock = Intersect(Target, Range("R1:R600"))
If rngLock Is Nothing Then Exit Sub
Call Unprotect(Password:="XXX")
For Each Zelle In rngLock
Range("B" & Zelle.Row & ":BA" & Zelle.Row).Locked = Zelle.Text = "Ja"
Next
Call Protect(Password:="XXX")
End Sub

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige