Hallo Thomas,
ich habe mir gerade eine Endlosschleife gelegt :-(
Wenn Zelle c23 aktiviert wird, soll die Schleife durchlaufen
werden.
Danach soll wieder c23 die aktive Zelle sein, ohne jedoch die
Schleife nochmal zu durchlaufen.
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$C$23"
Range("$c$34").Select
ActiveCell.FormulaR1C1 = "=RC[+3]"
Range("$D$34").Select
ActiveCell.FormulaR1C1 = "=RC[+3]"
If Intersect(Target, Range("C23:C23")) Is Nothing
Then Exit Sub
Range("$c$23").Select
End Select
End Sub
Hat vielleicht jemand eine Idee?
Ja, das ist ein Klassiker - bedingt durch die Selektion der
Zellen in die Du schreibst. Lass die .Select und .Activate
alle weg (in >99% sind sie eh unnätig), dann klappt das Ganze
schon mal korrekt.
Und da Du dann die markierte Zelle gar nicht verlässt, ist es
auch nicht notwendig, sie am Ende wieder zu selektieren.
Dein Code sieht dann gleich viel schlanker aus:
So hab ich das nicht hinbekommen. Entweder es passiert nix, wenn ich
auf c23 gehe, oder, wenn ich versuche, was zu ändern, hänge ich wieder in der Schleife.
Hier mal der ganze Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cancel = True
'Sheets("Eingabe").ScrollArea = "A$2:$L$36"
Select Case Target.Address
Case "$C$4"
If Intersect(Target, Range("C4:C4")) Is Nothing Then Exit Sub
Range("$C$4") = 0
Range("$C$5") = 0
Range("$C$6") = 0
Range("$C$7") = 0
Range("$C$8") = 0
Range("$c$14") = 1.4
Range("$c$22") = 0
Range("$C$23") = 0
Range("$C$26") = 0
Range("$G$22") = 0
Range("$C$32") = 0
Range("$C$33") = 0
Range("$C$34") = 0
Range("$C$35") = 0
Case "$C$22"
If Intersect(Target, Range("C22:C22")) Is Nothing Then Exit Sub
Range("$C$22") = 0
Range("$C$23") = 0
Range("$C$26") = 0
Range("$C$32") = 0
Range("$C$33") = 0
Range("$C$34") = 0
Range("$C$35") = 0
Case "$G$22"
Range("$G$22") = 0
Case "$C$14"
Range("$C$14") = 1.4
Case "$C$23"
Range("$C$23") = 0
Range("$C$26") = 0
Range("$C$32") = 0
Range("$C$33") = 0
Range("$C$34") = 0
Range("$C$35") = 0
Range("$c$34").Select
ActiveCell.FormulaR1C1 = "=RC[+3]"
Range("$D$34").Select
ActiveCell.FormulaR1C1 = "=RC[+3]"
If Intersect(Target, Range("C23:C23")) Is Nothing Then Exit Sub
Range("$c$23").Select
Case "$C$26"
Range("$C$26") = 0
Range("$C$32") = 0
Range("$C$33") = 0
Range("$C$34") = 0
Range("$C$35") = 0
Range("$d$34") = 0
Case "$C$33"
Range("$C$23") = 0
End Select
End Sub
wo liegt mein Fehler?
Gruß
Rolf