Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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

Wenn in D15 ein Wert, dann in E15 Wert aus L15

Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 14:12:07
KZettpunkt
Hallo ich sitze jetzt schon seit Tagen an einer Excel-Liste und eine Sache bereitet mir Kopfzerbrechen.

Ich habe schon ein paar Makros in meiner Tabelle, dass z.B. der Wert, der in E15 eingetragen wird den Wert aus L15 nicht unterschreiten darf, sonst kommt eine Meldung.

Nun möchte ich aber folgendes realisieren:

Wenn in D15 (oder noch besser in C15 und D15) ein Wert eingetragen ist, dann soll in E15 der Wert aus L15 automatisch eingetragen werden.
Nun soll der Wert in E15 aber auch manuell abwandelbar sein, er darf nur nicht leer sein. Sobald der Inhalt gelöscht wird soll wieder der Wert aus L15 eingetragen werden.

Und das benötige ich nicht nur für Zeile 15 sondern für alle Zeilen bis zur Zeile 45.

Also wenn beispielsweise in D23 (oder C23 und D23) ein Wert steht dann soll in E23 der Wert aus L23.

Wenn in C und D nichts eingetragen ist soll auch nichts passieren.

Ich hoffe ich habe es nicht zu kompliziert ausgedrückt.

Viele Grüße

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 14:43:39
onur
" in D23 (oder C23 und D23) " sind zwei verschiedene Sachen. Was gilt denn nun?
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 14:54:10
Yal
Hallo KZ. (eindeutiger Pseudo ist gut, aber wenn du mit "Viele Grüße " abschliesst, kann man dich besser, persönlicher ansprechen ;-)

Probiere folgendes:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Ref As Range

Set Target = Target.Cells(1) 'berücksichtig nur die erste Zelle, falls Änderungen per copy-Paste gemacht wurden
If Intersect(Range("C15:E43"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
Set Ref = Target.EntireRow.Range("L1") 'relative Adressierung: nur die eine Zeile
Select Case Target.Column
Case 5 'Spalte "E"
If Target.Value = "" Then
Target.Value = Ref.Value
ElseIf Target.Value Ref.Value Then
MsgBox "Darf nicht " & Ref.Value & " unterschreiten."
Application.Undo
End If
Case 3 To 4 'Spalte C bis D
Target.Value = Ref.Value
Case Else
'nichts. Nur vollständigkeitshalber hinzugefügt
End Select
Application.EnableEvents = True
End Sub


VG
Yal
Anzeige
es war "Viele Grüße -Vorname-" gemeint.. owT
07.12.2023 14:57:22
Yal
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 15:11:26
KZettpunkt
Da überschreibt er mir meine Wert in Spalte C und D mit den Werten aus Spalte L egal was ich eingebe.

Ich wollte ja, dass man in Spalte C und D etwas eingeben kann und wenn dort etwas drin steht automatisch in Spalte E der Wert aus Spalte L erscheint.

Man soll Spalte E aber weiterhin mit anderen Werten verändern können, jedoch darf diese nicht leer sein wenn in C und D etwas drin steht. Sobald diese geleert wird und Spalte C und D haben Werte soll wieder der Wert aus Spalte L dort eingetragen werden.
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 16:05:45
daniel
HI
Dieses Verhalten kannst du auch ohne Makros, nur per Formel, erreichen:
allerdings brauchst du für Spalte E drei Spalten (also E, F und G)

in Spalte E kommt diese Formel:
=Wenn(Anzahl2(C1:D1)=2;L1&"";"")
Spalte F ist leer, hier trägst du den von Hand geänderten Wert ein.
in Spalte G dann diese Formel, sie holt den Wert aus F, wenn in F was steht, ansonsten den Wert aus E (dann L1)
=Wenn(F1="";E1;F1)

für die passende Optik solltest du Spalte E so schmal wie möglich ziehen, ohne die Spalte ganz auszublenden (Breite 1 Pixel)
die Spalte E sollte auch gesperrt sein, falls du mit Schreibschutz arbeiten willst, damit diese nicht aus versehen überschrieben wird.

Spalte F ist dann die Spalte, die du für weitere Auswertungen verwenden solltest.
Diese Spalte kannst du ausblenden.

beachte, der Wert für die Anzeige in Spalte E muss ein Text sein, nur dann wird der Inhalt in F weiter geschrieben wenn F leer ist.

Gruß Daniel

Gruß Daniel
Anzeige
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 16:31:06
KZettpunkt
Hallo vielen Dank für deine Antwort, aber in Spalte E soll keine Formel zu sehen sein.
Lieber per Makro.

Ich habe den Vorschlag von Yal abgeändert, so dass die Werte in den Spalten C und D nicht mehr mit den Werten aus L überschrieben werden.
Das funktioniert auch soweit ganz gut. Ich habe auch die Message entfernt, da ich eh schon eine ähnliche Nachricht auf Grundlage einer Berechnung habe.

Nun wird beim Löschen von Werten in Spalte E immer auf den Wert aus Spalte L zurückgesetzt.

Nun fehlt mir nur noch dass, wenn in Zellen der Spalte C und Spalte D ein Wert steht der Wert aus Spalte L automatisch in Spalte E übertragen wird (soll sich aber weiterhin ändern lassen)

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Ref As Range

Set Target = Target.Cells(1) 'berücksichtig nur die erste Zelle, falls Änderungen per copy-Paste gemacht wurden
If Intersect(Range("E15:E43"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
Set Ref = Target.EntireRow.Range("L1") 'relative Adressierung: nur die eine Zeile
Select Case Target.Column
Case 5 'Spalte "E"
If Target.Value = "" Then
Target.Value = Ref.Value
End If
Case 3 To 4 'Spalte C bis D
Target.Value = Ref.Value
Case Else
'nichts. Nur vollständigkeitshalber hinzugefügt
End Select
Application.EnableEvents = True
End Sub


Viele Grüße

kai
Anzeige
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 16:35:42
daniel
du siehst die Formel in Spalte E ja auch nicht, wenn du es so machst, wie ich es beschrieben habe.
Sie ist halt da, stört aber nicht.
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 16:55:24
onur
Er schrieb anfangs "Nun soll der Wert in E15 aber auch manuell abwandelbar sein".
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
08.12.2023 08:45:16
KZettpunkt
Ja du hast recht, deine Lösung hatte ich auch schon einmal in einem anderen Beitrag gesehen und ist kann auch das umsetzen was ich mir vorgestellt habe,
aber ich habe mehrere Tabellenblätter und müsste dann zu viel anpassen, da die Zellen um E auch schon mit Formeln belegt sind.

Mir wäre lieber das ganze per VBA zu lösen. Wie gesagt ich bin sehr dicht dran es, nun fehlt mir nur noch dass, wenn in Zellen der Spalte C und Spalte D ein Wert steht der Wert aus Spalte L automatisch in Spalte E übertragen wird (soll sich aber weiterhin ändern lassen)

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Ref As Range

Set Target = Target.Cells(1) 'berücksichtig nur die erste Zelle, falls Änderungen per copy-Paste gemacht wurden
If Intersect(Range("E15:E43"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
Set Ref = Target.EntireRow.Range("L1") 'relative Adressierung: nur die eine Zeile
Select Case Target.Column
Case 5 'Spalte "E"
If Target.Value = "" Then
Target.Value = Ref.Value
End If
Case 3 To 4 'Spalte C bis D
Target.Value = Ref.Value
Case Else
'nichts. Nur vollständigkeitshalber hinzugefügt
End Select
Application.EnableEvents = True
End Sub


Viele Grüße

Kai

PS: Ich wollte nicht dass durch meinen Beitrag ein Streit eskaliert.
Anzeige
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
08.12.2023 10:12:00
Yal
Hallo Kai,

ja, sorry, dei Anforderung nicht genau gelesen.
Mit Target.EntireRow.Range("E1") wird die Zelle in Spalte E der Zeile der gerade geänderten Zelle angepasst. Alternative wäre Cells(Target.Row, "E") .

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Ref As Range

Set Target = Target.Cells(1) 'berücksichtig nur die erste Zelle, falls Änderungen per copy-Paste gemacht wurden
If Intersect(Range("C15:E43"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
Set Ref = Cells(Target.Row, "L")
Select Case Target.Column
Case 5 'Spalte "E"
If Target.Value = "" Then
Cells(Target.Row, "E").Value = Ref.Value
ElseIf Target.Value Ref.Value Then
MsgBox "Darf nicht " & Ref.Value & " unterschreiten."
Application.Undo
End If
Case 3 To 4 'Spalte C bis D
Cells(Target.Row, "E").Value = Ref.Value
Case Else
'nichts. Nur vollständigkeitshalber hinzugefügt
End Select
Application.EnableEvents = True
End Sub


Was der Streit angebelangt, hast Du es weder verursacht, noch hast Du was damit zu tun. Die Beteiligten sind langjährigen Beitragenden, die sich eigentlich "kennen" sollten.

VG
Yal
Anzeige
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
08.12.2023 10:49:34
KZettpunkt
Ja das ist schon sehr gut vielen Dank :)

Ich habe aus deinem Code nur folgendes entfernt:

        ElseIf Target.Value  Ref.Value Then

MsgBox "Darf nicht " & Ref.Value & " unterschreiten."
Application.Undo


Das sorgte bei mir für zwei Meldungen hintereinander, da ich dafür ja schon eine Meldung habe.
Außerdem hat er den Wert, der manuell reingeschrieben wurde dann wieder resettet.

So funktioniert es jetzt:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Ref As Range

Set Target = Target.Cells(1) 'berücksichtig nur die erste Zelle, falls Änderungen per copy-Paste gemacht wurden
If Intersect(Range("C15:E43"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
Set Ref = Cells(Target.Row, "L")
Select Case Target.Column
Case 5 'Spalte "E"
If Target.Value = "" Then
Cells(Target.Row, "E").Value = Ref.Value
End If
Case 3 To 4 'Spalte C bis D
Cells(Target.Row, "E").Value = Ref.Value
Case Else
'nichts. Nur vollständigkeitshalber hinzugefügt
End Select
Application.EnableEvents = True
End Sub


Zwei kleine optische Feinheiten wären noch schön, wenn es keine Umstände macht:

1. Aktuell wird auch L in E übertragen wenn man nur etwas in D schreibt ohne etwas in C stehen zu haben, schön wäre es als Bedingung dafür einen Eintrag in D und C zu haben.

2. Wenn man etwas in C einträgt kommt direkt in E "#NV" kann man das noch ausschalten? Ist aber wie gesagt nur ne optische Sache.

Viele Grüße

Kai

PS: kann ich meinen Benutzernamen hier im Forum noch ändern ? ^^
Anzeige
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
08.12.2023 17:31:12
Yal
Hallo Kai,

Du kannst jederzeit einen anderen Namen verwenden, da nur Mail-Adresse und Passwort für die Authentifizierung geprüft werden.

Zu 1. Es wurde dazu führen, weil selten beide Werte (C und D) gleichzeitig gesetzt werden, das immer zuerst eine Meldung gibt...

Zu 2. Wahrscheinlich weil in L eine Formel gibt, die von D abhängig ist. Dort kann man mit WennFehler den #NV auf "" umschalten. Im Code müsste man prüfen,
If Cells (Target.Row, "D"). Value > "" Then Cells(Target.Row, "E").Value = Ref.Value


VG
Yal
Anzeige
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 17:39:43
daniel
ja und ich schrieb:

"allerdings brauchst du für Spalte E drei Spalten (also E, F und G)"
und
"Spalte F ist leer, hier trägst du den von Hand geänderten Wert ein."

man sollte Beiträge schon mal lesen, bevor man sie kommentiert.
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 17:46:47
onur
Sorry - Ich wollte dich nicht kommentieren, sondern dir nur helfen, hatte allerdings tatsächlich übersehen, dass du mit Hilfszelle arbeitest..
Trotzdem: hör mal bitte auf, "Kollegen" gegenüber wieder dein Gift zu versprühen....
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 18:03:32
daniel
du hast mich angesprochen.
nicht ich dich.
Denk da mal drüber nach.
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 18:08:26
onur
Denk da mal drüber nach.: Deine Antwort war ja o.k. . Aber den letzten Satz davon hättest du dir auch sparen können - oder ?
Anzeige
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 18:41:22
daniel
nö, der musste schon sein.
denn eigentlich bist du die "Giftspritze" weil du mit deinem Beitrag "dezent" darauf hinweisen wolltest, dass ich die Frage nicht ordentlich gelesen und die Anforderungen nicht berücksichtigt habe, was aber falsch ist, und das hätte dir auffallen müssen.
Aber du wolltest halt mal dem Kollegen kurz einen reindrücken. Kann man machen, sollte aber berechtigt sein.
Ist es in diesem Fall aber nicht.
Deswegen mein guter Ratschlag an dich, Beiträge, die man kommentieren möchte, vorher aufmerksam durchzulesen und das lieber zweimal.
Wie gesagt, ein guter Ratschlag, den ich dir mitgeben möchte.
Anzeige
und du verwechselst
07.12.2023 18:09:13
daniel
"Gift" mit "gutem Ratschlag"
AW: es war "Viele Grüße -Vorname-" gemeint.. owT
07.12.2023 15:03:07
KZettpunkt
Oh ja sorry, meine Initialien sind wirklich so. Keine Ahnung was meine Eltern da geraucht haben...

Viele Grüße

Kai
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 14:50:35
KZettpunkt
Ja sorry damit meinte ich, dass es reichen würde zu prüfen ob ein Wert in D23 ist.
Die schönste Lösung wäre aber wenn er prüft ob in C23 und in D23 ein Wert vorhanden ist. Das wäre mir noch am liebsten.
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 14:53:15
onur
" in C23 und in D23" bedeutet eigentlich: Nur, wenn in BEIDEN Zellen ein Wert vorhanden ist. Sicher? Oder meinst du ODER?
AW: Wenn in D15 ein Wert, dann in E15 Wert aus L15
07.12.2023 15:01:06
KZettpunkt
Ja wenn in beiden etwas steht

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige