Registriert seit: 08.07.2016
Version(en): 2016
25.11.2017, 20:52
(Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2017, 20:52 von o0Julia0o.)
Und wieso klappt das hier auf mal nicht mehr?:
If Worksheets("Rech").Range("U43") = 1 Then Worksheets("Namen").Range("H3") = Worksheets("Rech").Range("P3")
If Worksheets("Rech").Range("U43") = 2 Then Worksheets("Namenl").Range("P4") = Worksheets("Rech").Range("P3")
Ich möchte, wenn in Rech.U43 eine 1 steht, dass in Namen.H3 der Wert von Rech.P3 eingetragen wird.
Wenn aber in Rech.U43 stattdessen eine 2 steht, soll in Namen.H3 der Wert von Rech.P3 eingetragen werden.
Doch es geschieht stattdessen folgendes:
Wenn in Rech.U43 eine 1 steht, wird in Namen.H3 der Wert von Rech.P3 eingetragen. (wie gewünscht)
Wenn in Rech.U43 eine 2 steht, wird in Namen.H3 & Namen.P4 der Wert von Rech.P3 eingetragen!
Wenn ich es so mache:
If Worksheets("Rech").Range("U43") = 1 Then Msgbox "Es ist eine 1"
If Worksheets("Rech").Range("U43") = 2 Then Msgbox "Es ist eine 2"
dann zeigt er nur "Es ist eine 2" an, wenn in Rech.U43 eine 2 steht. (anstatt "Es ist eine 1" & "Es ist eine 2" anzuzeigen)
Und auch nur "Es ist eine 1" an, wenn in REch.U43 eine 1 steht.
Wo steckt der Fehler?
#s3gt_translate_tooltip_mini { display: none !important; }
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
Hallo Julia,
Zitat:Wo steckt der Fehler?
... im Zweifel im Code, denke ich.
Aber den, zumindest den Aktuellen, kennst eigentlich nur Du
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Julia,
Ich weiß ja nicht, ob Du den Code hier reingeschrieben oder aus dem Codefenster rein kopiert hast, aber fällt dir hier was auf?
Zitat:If Worksheets("Rech").Range("U43") = 1 Then Worksheets("Namen").Range("H3") = Worksheets("Rech").Range("P3")
If Worksheets("Rech").Range("U43") = 2 Then Worksheets("Namenl").Range("P4") = Worksheets("Rech").Range("P3")
Ich möchte, wenn in Rech.U43 eine 1 steht, dass in Namen.H3 der Wert von Rech.P3 eingetragen wird.
Wenn aber in Rech.U43 stattdessen eine 2 steht, soll in Namen.H3 der Wert von Rech.P3 eingetragen werden.
Gruß Stefan
Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
28.11.2017, 19:06
(Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2017, 19:06 von o0Julia0o.)
oh, danke. Das untere H3 im Text war falsch - im code ist es korrekt. Also nochmal korrigiert:
Und wieso klappt das hier auf mal nicht mehr?:
If Worksheets("Rech").Range("U43") = 1 Then Worksheets("Namen").Range("H3") = Worksheets("Rech").Range("P3")
If Worksheets("Rech").Range("U43") = 2 Then Worksheets("Namen").Range("P4") = Worksheets("Rech").Range("P3")
Ich möchte, wenn in Rech.U43 eine 1 steht, dass in Namen.H3 der Wert von Rech.P3 eingetragen wird.
Wenn aber in Rech.U43 stattdessen eine 2 steht, soll in Namen.P4 der Wert von Rech.P3 eingetragen werden.
Doch es geschieht stattdessen folgendes:
Wenn in Rech.U43 eine 1 steht, wird in Namen.H3 der Wert von Rech.P3 eingetragen. (wie gewünscht)
Wenn in Rech.U43 eine 2 steht, wird in Namen.H3 & Namen.P4 der Wert von Rech.P3 eingetragen! (ich möchte, dass nur in Namen.P4 der Wert von Rech.P3 eingetragen wird. Und nicht auch noch in Namen.H3)
Wenn ich es so mache:
If Worksheets("Rech").Range("U43") = 1 Then Msgbox "Es ist eine 1"
If Worksheets("Rech").Range("U43") = 2 Then Msgbox "Es ist eine 2"
dann zeigt er nur "Es ist eine 2" an, wenn in Rech.U43 eine 2 steht. (anstatt "Es ist eine 1" & "Es ist eine 2" anzuzeigen)
Und auch nur "Es ist eine 1" an, wenn in REch.U43 eine 1 steht.
Die Frage ist also. Warum macht er es im Messagebox-Beispiel richtig & in Codezeile2 zeigt er "Es ist eine 2" an. Aber im 1. Beispiel, wenn die 2. Codezeile ausgeführt wird(weil in Rech.U43 eine 2 steht), wird nicht das gemacht, was dahinter steht. Also: Then Worksheets("Namen").Range("P4") = Worksheets("Rech").Range("P3"). Sondern es wird folgendes gemacht:
1.: Then Worksheets("Namen").Range("H3") = Worksheets("Rech").Range("P3")
2.: Then Worksheets("Namen").Range("P4") = Worksheets("Rech").Range("P3")
Selbst wenn in Rech.U43 eine 3 oder 4 steht usw. wird immer dieses Then ausgeführt: Then Worksheets("Namen").Range("H3") = Worksheets("Rech").Range("P3")
Warum. Die If-Anweisung lautet doch: If Worksheets("Rech").Range("U43") = 1 Then Worksheets("Namen").Range("H3") = Worksheets("Rech").Range("P3")
Also NUR, wenn in Rech.U43 eine 1 steht, soll die Then-Anweisung ausgeführt werden.
Wenn ich eine dritte If-Anweisung schreibe, also ingesamt so:
If Worksheets("Rech").Range("U43") = 1 Then Worksheets("Namen").Range("H3") = Worksheets("Rech").Range("P3")
If Worksheets("Rech").Range("U43") = 2 Then Worksheets("Namen").Range("P4") = Worksheets("Rech").Range("P3")
If Worksheets("Rech").Range("U43") = 3 Then Worksheets("Namen").Range("W5") = Worksheets("Rech").Range("P3")
dann führt er die 2. und 3. Then-Anweisung aus, wenn eine 2 oder 3 in Rech.U43 steht. Die 1. Then-Anweisung aber nicht nur, wenn dort eine 1 in Rech.U43 steht, sondern immer.
Ich habe auch schon versucht noch eine Zeile über der 1. If-Anweisung zu schreiben "If Worksheets("Rech").Range("U43") = 0 Then Worksheets("Namen").Range("E1") = Worksheets("Rech").Range("P3")". Doch da nützt auch nichts. Den Wert 0 hat Rech.U43 aber auch nie. Ich dachte aber, evlt. führt VBA die 1. Then-Anweisung nach der 1. If-Anweisung immer mit aus. Aber anscheinend nicht.
Auch wenn ich nur die 1. If-Then-Anweisung stehen habe, also: "If Worksheets("Rech").Range("U43") = 1 Then Worksheets("Namen").Range("H3") = Worksheets("Rech").Range("P3")" wird in Namen.H3 immer der Wert aus Rech.P3 eingetragen, wenn ich den Code ausführe. Egal ob in Rech.U43 eine 1, 2, 3, 4, 5, etc. steht.
Oh man - ich habs ^^ Eine alte Testzeile nicht gelöscht - die hatte das stets eingetragen. Dämlich... :16: