Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
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 anhand einer Vorauswahl sperren

Zellen anhand einer Vorauswahl sperren
17.02.2021 09:43:53
Benny
Hallo,
ich habe folgendes Problem. Meine Excel Liste hat in A und B normale Kundendaten und in C dann ein Dropdown mit mehreren Aufgaben. Je nachdem welche Aufgabe ausgewählt werden soll, sollen zum Beispiel bei Bestellung die Felder D,E,F,G,H,J,K,L und M frei werden.
Bei Schließung nur die Felder D,F,G und H.
Und das natürlich bei allen Zeilen.
Ich hoffe das war verständlich.
Hier ein Beispiel:
https://www.herber.de/bbs/user/143991.xlsx

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: theoretisch möglich, jedoch ...
17.02.2021 10:19:29
neopa
Hallo Benny,
... abgesehen davon, dass Du in Deiner Dropdowns in Spalte C keine Auswahl "Bestellung" vorgesehen hast, könnte man dies in den Spalten D:M auch mit benutzerdefinierter Datengültigkeit realisieren.
Jedoch hat diese Standardmöglichkeit den Nachteil, dass durch kopieren von beliebigen Zellen (also nicht nur deren Werten) die Sperre umgangen werden könnte.
Deshalb bräuchtest Du mE z.B. eine VBA-Lösung die dieses verhindert, Dir aber trotzdem die Möglichkeit gibt, nachträgliche Änderungen vorzunehmen. Wenn Du so etwas anstrebst, schreibe im Antwortbetreff: VBA -Lösung gesucht und kennzeichne den thread als offen.
Gruß Werner
.. , - ...
Anzeige
AW: VBA -Lösung gesucht
17.02.2021 10:27:56
Benny
Ich wäre auch für eine VBA Lösung, habe nur nicht allzu viel Erfahrung. Aber stimmt Bestellung hab ich da nicht drin.
Wie wäre denn die Lösung?
AW: VBA -Lösung gesucht
17.02.2021 10:28:25
Benny
Ich wäre auch für eine VBA Lösung, habe nur nicht allzu viel Erfahrung. Aber stimmt Bestellung hab ich da nicht drin.
Wie wäre denn die Lösung?
AW: Zellen anhand einer Vorauswahl sperren
17.02.2021 13:19:15
Benny
Hallo Herbert,
hmm. Egal welche Anforderung ich auswähle, es werden immer alle Felder angezeigt.
Was soll denn passieren?
AW: Zellen anhand einer Vorauswahl sperren
17.02.2021 14:56:01
Herbert_Grom
Was passieren soll weiß ich doch nicht, du sagst es mir ja nicht!!!
Du schreibst: "Je nachdem welche Aufgabe ausgewählt werden soll"! Also, was soll bei welcher Auswahl passieren?
Anzeige
AW: Zellen anhand einer Vorauswahl sperren
17.02.2021 16:49:36
Benny
Das war überhaupt nicht böse gemeint. Ich habe nur nicht verstanden was ich testen soll, da du schriebst: Teste mal.
Ich möchte, dass wenn ich z.b. den Punkt „Schließung“ im Dropdown-Menü auswähle, nur die Felder D,F,G und H zu beschreiben sind und die anderen Punkte (außer A und B).
AW: Zellen anhand einer Vorauswahl sperren
17.02.2021 18:16:37
Herbert_Grom
Und was soll bei den anderen Pkt passieren?5
AW: Zellen anhand einer Vorauswahl sperren
17.02.2021 18:29:09
Benny
Ich versuche das nochmal anhand eines Bildes deutlich zu machen mit 2 Beispielen.
Hier einmal ein Bild:
Userbild
Wenn in Feld C2 Neueröffnung ausgewählt wird, sollen die grünen Felder beschreibbar sein.
Wenn "Schließung" ausgewählt wird (hierin Zeile 3), soll die grünen Felder in Zeile 3 beschreibbar sein (also D,F,G,H).
Das ganze dann nach unten skalierbar.
Ich hoffe das war anschaulich genug ;)
Ansonst gerne Fragen.
Danke
Anzeige
AW: Zellen anhand einer Vorauswahl sperren
17.02.2021 18:31:29
Benny
Jeder Punkt für soll verschiedene Felder beschreibbar machen. Das würde ich dann individuell anpassen. Ich würde nur gerne den Weg verstehen und es dann selber umsetzen.
AW: Zellen anhand einer Vorauswahl sperren
17.02.2021 20:18:08
Yal
Hallo zusammen,
@Benny:
versucht mit folgendem Code (ich habe die Vorlage von Herbert verwendet):
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static ZelleDavor As Range
On Error GoTo Catch
Try:
If ZelleDavor.Column = 3 And ZelleDavor.Row > 2 And ZelleDavor.Value  "" Then
Application.EnableEvents = False
ActiveSheet.Unprotect
ZelleDavor.Range("B1:J1").ClearContents 'relative Adresse!
Zellen_sperren ZelleDavor
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
End If
Catch:
Finally:
Set ZelleDavor = Target
End Sub
Sub Zellen_sperren(Zelle)
Dim List, i
Select Case Zelle.Value
Case "Schließung": List = "0100011111"
'case "xy": list = "..." '0:offen, 1:gesperrt
Case Else: List = "0000000000"
End Select
For i = 1 To Len(List)
Zelle.Offset(0, i).Locked = CBool(Mid(List, i, 1))
Zelle.Offset(0, i).Interior.ColorIndex = 35 - 13 * CInt(Mid(List, i, 1)) '22:rot, 35:grü _
n
Next
End Sub
Das Sperren von Zelle ist mit Blattschutz verbunden. Auf der Zelle rechte Maustaste "Zelle Formatieren", Reiter "Schutz", "Gesperrt" anklicken. Aber das wirkt erst, wenn unter "Überprüfen", Blattschutz aktiviert wird.
Genau das macht das Coding:
wenn Zelle passt (Spalte 3, ab Zeile 2)
_ Blattschutz weg
_ Abhängig von Inhalt eine Liste von Sperre/nicht Sperre nehmen
_ auf die Zellen der gegebene Zeile ab Spalte 4 anwenden
_ Blatt wieder sperren
Solltest Du die andere Werte eintragen wollen, lege je ein neuen Case.
Die zweite Zeile mit ColorIndex ist nur zum testzweck.
VG
Yal
Anzeige
AW: Zellen anhand einer Vorauswahl sperren
18.02.2021 06:24:59
Benny
Hallo Yal,
vielen Dank für deine Hilfe. Also ich habe das jetzt zum testen mal eingebaut.
Ich habe folgendes gemacht: D-M Blattschutz den Haken gesetzt, Dann deinen Code 1:1 rein kopiert ins VBA und anschließend den Blattschutz aktiviert. Anschließend als .xlsm abgespeichert.
Wenn ich nun aber Schließung auswähle, sind alle zellen danach weiterhin gesperrt. So wie auch wenn ich etwas anderes auswähle.
Was habe ich falsch gemacht?
Ich hab die Datei mal angehängt.
https://www.herber.de/bbs/user/144026.xlsm
Blattschutz habe ich wieder deaktiviert unter "Überprüfen"
Gruß
Benny
Anzeige
AW: Zellen anhand einer Vorauswahl sperren
18.02.2021 09:37:28
Yal
Hallo Benny,
vom Eichhornchen und Teufelchen...
im Coding
ZelleDavor.Row > 2

durch
ZelleDavor.Row >= 2

ersetzen.
Ab Zeile 3 hätte es funktioniert ;-)
VG
Yal
AW: Zellen anhand einer Vorauswahl sperren
18.02.2021 10:13:11
Benny
Hallo Yal,
sorry wenn ich mich etwas blöd anstelle. Ich habe das jetzt angepasst aber es bleibt dabei, dass alle Zellen schreibgeschützt sind. Egals was ich in Spalte C2, C3, C4 usw. stehen habe.
Hier mein VBA:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static ZelleDavor As Range
On Error GoTo Catch
Try:
If ZelleDavor.Column = 3 And ZelleDavor.Row >= 2 And ZelleDavor.Value  "" Then
Application.EnableEvents = False
ActiveSheet.Unprotect
ZelleDavor.Range("B1:J1").ClearContents 'relative Adresse!
Zellen_sperren ZelleDavor
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
End If
Catch:
Finally:
Set ZelleDavor = Target
End Sub
Sub Zellen_sperren(Zelle)
Dim List, i
Select Case Zelle.Value
Case "Schließung": List = "0100011111"
Case "Neueröffnung": List = "1111111111"
'case "xy": list = "..." '0:offen, 1:gesperrt
Case Else: List = "0000000000"
End Select
For i = 1 To Len(List)
Zelle.Offset(0, i).Locked = CBool(Mid(List, i, 1))
Zelle.Offset(0, i).Interior.ColorIndex = 35 - 13 * CInt(Mid(List, i, 1)) '22:rot, 35:grü _
_
n
Next
End Sub

Wenn ich den Code richtig verstehe, sollten doch - wenn ich in Feld C2 Schließung stehen habe,die Felder D2, F2, G2, und H2 frei sein und E2, I2, J2, K2, L2 und M2 gesperrt. Richtig? Das passiert bei mir nicht.
In dem Code beziehst du dich auf eine Range ("B1:J1")
Was ist damit gemeint?
Nur nochmal zur Siocherheit:
Den Haken bei Schutz habe ich nur in den Feldern D2 - M500. Nur bei diesen Feldern soll sich der Schutz per Bedingung rein oder raus genommen werden. A und B sind nur einfache Felder die beschreibbar sind und in C wird die Bedingung per Dropdwown ausgewählt.
Anzeige
AW: Zellen anhand einer Vorauswahl sperren
18.02.2021 13:59:13
Yal
Hallo Benny,
"In dem Code beziehst du dich auf eine Range ("B1:J1")" --> steht im Kommentar. "relativ" bedeutet: da wo ich stehe ist "A1". "B1:J1" ist in dem Fall die 10 Zellen rechts von der Zelle, wo die Werte steht.
Das Coding wird durch das Ereignis "SelectionChange" ausgelöst. Spricht, das ändern der Wert in der Zelle, wo Schliessung reinkommt (besonders durch Auswahlliste) reicht nicht. Nur wenn Du eine andere Zelle anklickst, wird das Ereignis ausgelöst.
Solltest mehr als 10 Zellen schützen wollen, muss Du eine "0011"-Kette mit genauso viele Elemente übergeben. Aber das hast Du sicher schon entdeckt). Tipp: bei Eingabe jede vierte Werte einen Null eintragen und anschliessend löschen, oder einfach in Zelle_sperren
List = Replace (List, " ", "") 

reinbringen ;-)
VG
Yal
Anzeige
AW: Zellen anhand einer Vorauswahl sperren
18.02.2021 15:36:50
Benny
Hi,
vielen Dank. Das klappt super. Das einzige was noch fehlt ist wenn ich jetzt einen Wert ausgewählt habe, diesen aber daach wieder raus lösche, dann bleiben die ausgewählten zellen gesperrt und farbig. Also müsste ich jetzt noch die Zellen wieder in den ursprungs Zustand zurück versetzen wenn leer.
Hier mein Code.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static ZelleDavor As Range
On Error GoTo Catch
Try:
If ZelleDavor.Column = 3 And ZelleDavor.Row >= 2 And ZelleDavor.Value  "" Then
Application.EnableEvents = False
ActiveSheet.Unprotect
ZelleDavor.Range("D1:M1").ClearContents 'relative Adresse!
Zellen_sperren ZelleDavor
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.EnableEvents = True
End If
Catch:
Finally:
Set ZelleDavor = Target
End Sub
Sub Zellen_sperren(Zelle)
Dim List, i
List = Replace(List, " ", "")
Select Case Zelle.Value
Case "Neueröffnung": List = "0010000000"
Case "Inhaberwechsel": List = "0000000000"
Case "Umfirmierung": List = "0000000000"
Case "Schließung": List = "0100011111"
Case "KK Auftrag": List = "0011111000"
Case "KK Eingang": List = "0111111000"
'case "xy": list = "..." '0:offen, 1:gesperrt
Case Else: List = "0000000000"
End Select
For i = 1 To Len(List)
Zelle.Offset(0, i).Locked = CBool(Mid(List, i, 1))
Zelle.Offset(0, i).Interior.ColorIndex = 35 - 13 * CInt(Mid(List, i, 1)) '22:rot, 35:grü _
_
_
n
Next
End Sub

Ich vermute mal ich muss hier irgendwo die Formatierung setzen:
Case Else: List = "0000000000"

Anzeige
AW: Zellen anhand einer Vorauswahl sperren
18.02.2021 16:01:18
Yal
Hallo Benny,
steht aber in
If ZelleDavor.Column = 3 And ZelleDavor.Row >= 2 And ZelleDavor.Value  "" Then

drin, dass der Vorgang nicht gestartet werden soll, wenn die Zelle in Spalte C leer ist...
Wenn Du das korrigiert hast, dann läuft es.
VG
Yal
AW: Zellen anhand einer Vorauswahl sperren
19.02.2021 07:00:02
Benny
Ich hab jetzt eigentlich nicht viel verändert aber irgendwie klappt es dennoch nicht :(
Liegt das vielleicht an irgendwelchen anderen Einstellungen?
Gestern hat es geplappt, nur nicht wenn ich den wert wieder gelöscht habe. Nun klappt es gar nicht mehr :(
Ich hab jetzt mal die fertige Excel hochgeladen und das PW für den Blattschutz ist "test"
Hab ich die Zeile
List = Replace(List, " ", "")

vielleicht falsch gesetzt?
https://www.herber.de/bbs/user/144061.xlsm
Anzeige
AW: Zellen anhand einer Vorauswahl sperren
19.02.2021 12:04:17
Yal
Die Aufgabe muss auch für Zeile 2 gelten also >=2 anstatt >2
If ZelleDavor.Column = 3 And ZelleDavor.Row >= 2 And ZelleDavor.Value  "" Then

Bei Löschung der Inhalt muss der Default-Zustand wiederherstellt werden, daher muss
And ZelleDavor.Value  ""

raus
Ansonsten den Passwort als Param in Protect/Unprotect übergeben.
Die Leerzeichen für bessere Lesbarkeit habe ich auch reingebracht.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static ZelleDavor As Range
On Error GoTo Catch
Try:
If ZelleDavor.Column = 3 And ZelleDavor.Row >= 2 Then
Application.EnableEvents = False
ActiveSheet.Unprotect Password:="test"
ZelleDavor.Range("D1:M1").ClearContents 'relative Adresse!
Zellen_sperren ZelleDavor
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=" _
test"
Application.EnableEvents = True
End If
Catch:
Finally:
Set ZelleDavor = Target
End Sub
Sub Zellen_sperren(Zelle)
Dim List, i
List = Replace(List, " ", "")
Select Case Zelle.Value
Case "Neueröffnung":   List = "001 000 0000"
Case "Inhaberwechsel": List = "000 000 0000"
Case "Umfirmierung":   List = "000 000 0000"
Case "Schließung":     List = "010 001 1111"
Case "KK Auftrag":     List = "001 111 1000"
Case "KK Eingang":     List = "011 111 1000"
'case "xy": list = "..." '0:offen, 1:gesperrt
Case Else: List = "00000 00000"
List = Replace(List, " ", "")
End Select
For i = 1 To Len(List)
Zelle.Offset(0, i).Locked = CBool(Mid(List, i, 1))
Zelle.Offset(0, i).Interior.ColorIndex = 35 - 13 * CInt(Mid(List, i, 1)) '22:rot, 35:grü _
_
n
Next
End Sub
VG
Yal
AW: Zellen anhand einer Vorauswahl sperren
19.02.2021 13:10:27
Benny
Wenn ich den Code so einfüge, dann kommt Syntaxfehler beim Kompilieren, bei der Zeile mit dem Password.
Wenn ich diese Zeile raus nehme geht die Excel nicht.
Kannst du eine funktionierende Datei anhängen?
AW: Zellen anhand einer Vorauswahl sperren
19.02.2021 15:06:17
Hajo_Zi
warum sollte jemand eine Datei anfügen. Du hälst es doch nicht für Notwendig, die fehlerhafte Datei hochzuladen.

AW: Zellen anhand einer Vorauswahl sperren
19.02.2021 15:53:40
Yal
@Hajo: alles gut. Auf Grund der Vorgeschichte (dabei einige Dateien drin) wusste ich, was gemeint ist.
@Benny: ungeschickt formuliert (wenn auch sicher nicht so gemeint ;-)
Schönes Wochenende
Yal
AW: Zellen anhand einer Vorauswahl sperren
22.02.2021 07:17:40
Benny
Hallo Val,
vielen Dank. Das war also wirklich ein total dummer Fehler von mir :(
Jetzt bin ich fast am Ziel.
Das einzige was die Datei jetzt noch macht ist, dass manchmal scheinbar unkontrolliert in einer Zeile darunter alles auf grün gesetzt wird und dass Zeilen wo nichts ausgewählt wurde, grün bleiben und beschreibbar bleiben. Eigentlich sollten diese Zeilen nicht farbig markiert sein und geschützt bleiben.
Ich hab die Datei mal hochgeladen.
Wäre super wenn du nochmal schauen könntest.
@Hajo
Das war wirklich etwas blöd formuliert. Sorry. Ich gelobe Besserung.
https://www.herber.de/bbs/user/144134.xlsm
AW: Zellen anhand einer Vorauswahl sperren
22.02.2021 13:57:18
Yal
Hallo BEnny,
es liegt an der Prüfung
ZelleDavor.Value ""
den wir aus dem If rausgemacht haben.
Man müsste einen Prüfung vornehmen:
Wenn ZelleDavor = ""
Dann ...
oder
wenn List2 = "00000000000"
dann alle gesperrt und keine Farbe
Oder
Grundsächlich einen Default-Zustand für eine Zeile, die immer zuerst gesetzt wird, bevor der spezifische Zustand gesetzt wird. Der Fall ZelleDavor = "" muss trotzdem dann abgefangen werden.
VG
Yal
AW: Zellen anhand einer Vorauswahl sperren
22.02.2021 17:02:30
Benny
Hallo VAL,
kannst du mir da helfen? Ich weiß leider nicht wie ich das umsetzen kann, sorry.
Ich würde einen Defauld Zustand setzen wollen, wenn nichts ausgewählt ist. Dann sollen die Zellen gesperrt sein aber nicht farblich
AW: Zellen anhand einer Vorauswahl sperren
22.02.2021 18:10:01
Yal
Hallo Benny,
Du magst Dich selbst "Basiskenntnisse in VBA" einstufen, Du möchstest aber nicht auf dem Stand bleiben, oder? Ausserdem, die Antworten stets geliefert zu bekommen macht abhängig. Denn Lösungen, die man nicht im Griff hat, machen schnell Ärger. Also leg Dich ins Zeug. Beissen tut es nicht. Und so schwierig ist es auch nicht.
Stellt zuerst sicher, dass Du alles verstanden hast, was wir bisher gemacht haben. Schaue genau die Codings, versuche zu vertehen, was da passiert, traue Dir Änderungen vorzunehmen und zu probieren (Duplikat des Codings mit Hochkomma falls Du unsicher bist).
Es ist nicht böse gemeint. Es ist der Start-Anschubser.
Also werde gut und gefragt (und nebenbei gut bezahlt).
Viel Erfolg
Yal
AW: Zellen anhand einer Vorauswahl sperren
23.02.2021 07:45:36
Benny
Hallo Val,
wahrscheinlich hast du recht. Ich habe mich mal versucht. Ich versuche mal das zuu beschreiben was ich bisher davon verstanden habe:
In diesem Block werden die Zellen von D1 bis M1 ausgewählt, wenn die Spalte Nr 3 ist und die Zeile entweder 2 oder größer ist (damit die Überschrift nicht mit gewählt wird).
Wenn die Bedingungen zutreffen, wird erlaubt Code auszuführen (EnableEvents), das Passwort wird gesetzt und diese Zeile verstehe ich nicht:
ZelleDavor.Range("D1:M1").ClearContents 'relative Adresse!

Dann ruft er die Funktion Zellen_sperren auf und übergibt dort den Inhalt des gerade ausgewählten Case.
Mein Problem ist, dass ich nicht genau weiß wo ich den default wert setzen muss. Ich habe es jetzt mal versucht und die Abfrage nach dem Case gestaltet. Dann einen neuen Case inzugefügt der leer ist und als Wert 10 x die 2 zurück gibt.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static ZelleDavor As Range
On Error GoTo Catch
Try:
If ZelleDavor.Column = 3 And ZelleDavor.Row >= 2 Then
Application.EnableEvents = False
ActiveSheet.Unprotect Password:="test"
ZelleDavor.Range("D1:M1").ClearContents 'relative Adresse!
Zellen_sperren ZelleDavor
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=" _
test"
Application.EnableEvents = True
End If
Catch:
Finally:
Set ZelleDavor = Target
End Sub
Sub Zellen_sperren(Zelle)
Dim List, i
List = Replace(List, " ", "")
Select Case Zelle.Value
Case "":               List = "2222222222"
Case "Neueröffnung":   List = "0010000000"
Case "Inhaberwechsel": List = "0000000000"
Case "Umfirmierung":   List = "0000000000"
Case "Schließung":     List = "0100011111"
Case "KK Auftrag":     List = "0111111000"
Case "KK Eingang":     List = "0111110000"
'case "xy": list = "..." '0:offen, 1:gesperrt
Case Else: List = "0000000000"
List = Replace(List, " ", "")
End Select
For i = 1 To Len(List)
If List = 2222222222# Then
Zelle.Offset(0, i).Locked = True
Zelle.Offset(0, i).Interior.ColorIndex = False
Else
Zelle.Offset(0, i).Locked = CBool(Mid(List, i, 1))
Zelle.Offset(0, i).Interior.ColorIndex = 35 - 13 * CInt(Mid(List, i, 1)) '22:rot, 35:grü _
n
End If
Next
End Sub
Kannst ja mal schauen. Für mich scheint es zu funktionieren aber manchmal sind Funktionen ja sehr quer und gehen auf die Computer Last.
Danke nochmal das du mich dazu animiert hast. Wenn man was für die Arbeit macht hat man oft nicht die Zeit sich damit so intensiev zu beschäftigen. Ich mache vba leider zu selten.
AW: Zellen anhand einer Vorauswahl sperren
23.02.2021 10:54:47
Yal
Hallo Benny,
dann 2 Hilfe-Tipps bzw. Ergängzung:
_ bei ZelleDavor.Range("D1:M1")
da ZelleDavor nicht das Worksheet, sondern ein Range, wirkt "D1:M1" relativ zu der Zelle, die mit ZelleDavor referenziert wird!
Wenn ZelleDavor A1 ist, entspricht D1:M1 dann E1:N1
Wenn ZelleDavor C3 ist, entspricht D1:M1 dann G3:P3
D1:M1 war nicht von mir. Da hast Du selber "probiert".
_ "Wenn die Bedingungen zutreffen, wird erlaubt Code auszuführen (EnableEvents)"
Umgekehrt: nur wenn Ausführung erlaubt ist, reagiert überhaupt das Ereignis "Worksheet_SelectionChange", dann wird geprüft, ob es sich um eine Zelle in Spalte 3, Zeile >= 2 handelt.
Da der Event (deutsch: Ereignis) "Worksheet_SelectionChange" immer auf die Zelle bezieht ("Target"), wo die Selektion gerade ankommt, aber nicht die Selektion, die man verlassen hat, wird ein Memory-Effekt verwendet: beim abschliessen wird gemerkt, wo man gerade steht
Set ZelleDavor = Target
und erst beim nächsten Aufruf verwendet: If ZelleDavor.Column = ...
_ "übergibt dort den Inhalt"
Jein. Es gibt 2 Fälle von Übergabe. ByVal, es übergibt den Inhalt der Variable als Kopie, und ByRef, es übergibt eine "Adresse" der Variable oder Objekt, spricht alle Änderungen, die auf dem übergegebene Parameter gemacht werden, wirken auf das original. Bei Objekte, wie u.a. Worksheet, Range, usw. wird immer ByRef übergeben. Also wird nicht der Inhalt der Zelle übergeben, sondern die Zelle selbst (eine Kopie macht hier kein Sinn). Genauer gesagt, es wird übergeben, um welcher Zelle es sich handelt (man sagt "Zeiger" dazu). Weil man auf die Zelle wirken möchte und nicht auf eine Kopie.
_ das Reseten der Zeile
würde als separaten Sub anlegen, die vor den Zelle_sperren zu rufen wäre
Sub Zellen_resetten(Zelle)
Zelle.EntireRow.Select
With Selection
.Locked = True
.Interior.Pattern = xlNone
End With
End Sub

Obwohl... das Coding ist schlank genug, um am Anfang von Zelle_sperren eingefügt zu sein.
Wenn Du nicht weiß, wie etwas zu machen ist, mache unter Aufzeichnung des Makro-Rekorders. Dann Hast Du eine Code, den Du lesen und verwenden kann.
VG
Yal
AW: Zellen anhand einer Vorauswahl sperren
23.02.2021 12:21:19
Benny
Hallo Yal,
danke für die ausführliche Erklärung jetzt wird einiges klarer. Und vielen Dank für deine Geduld ;)
Ich werde mich mal bei einer ruhigen Minute mit dem neuen Sub beschäftigen.
Alternativ scheint mein jetziges Ergebnis aber auf jeden Fall schon mal zu funktionieren. Habe gerade mehrfach rauf und runter getestet.
Wäre ohne dich nicht da hin gekommen.
Vielen Dank.
AW: Zellen anhand einer Vorauswahl sperren
19.02.2021 15:32:42
Yal
Hallo Benny,
das Beitragsfenster im Forum führt nicht selten bei lange Congingszeile zu einer Trennung, die in Excel nicht passt. Handarbeit ist an solche Stellen notwendig.
folgendes gehört zusammengefasst.
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=" _
test"
VG
Yal

156 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige