Moin zusaammen,
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?
Gruß und danke
Rolf
Grüezi Rolf
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:
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$C$23"
Range("C34").FormulaR1C1 = "=RC[+3]"
Range("D34").FormulaR1C1 = "=RC[+3]"
End Select
End Sub
Wenn Du dann dennoch die weiteren Events unterbinden willst lässt sich auch dies bewerkstelligen:
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$C$23"
Application.EnableEvents = False
Range("C34").FormulaR1C1 = "=RC[+3]"
Range("D34").FormulaR1C1 = "=RC[+3]"
Application.EnableEvents = True
End Select
End Sub
–
Mit freundlichen Grüssen
Thomas Ramel
Guten Tag.
Option Explicit
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
<u> Dim HatIhnSchon As Boolean</u>
Select Case Target.Address
<u> If (Not HatIhnSchon) Then</u>
Case "$C$23"
<u> HatIhnSchon = True</u>
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
<u> End If</u>
End Select
End Sub
So in etwa müsste das gehen.
Gruß Eillicht zu Vensre
Hallo zusammen,
ich danke euch beiden und allen, die sich nen Kopf gemacht haben.
Ich kann’s im Moment nicht zu ende bringen - keine Zeit…
Habe eure Lösungen gut verstaut und melde mich die Tage wieder.
Gruß und danke für eure Mühe.
Rolf
Hallo,
nun komme ich endlich dazu, zu antworten.
Ich habe das mal so eingebaut:
Option Explicit
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Dim HatIhnSchon As Boolean
Select Case Target.Address
Case "$C$23"
If (Not HatIhnSchon) Then
HatIhnSchon = True
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 If
End Select
End sub
Dabei bleibt er aber auch wieder in dieser Schleife hängen,
d.h. er hoppelt endlos von C34 nach D34.
Select Case Target.Address
If (Not HatIhnSchon) Then
Case "$C$23"
So herum mochte er das nicht, das gab eine Fehlermeldung:
Anweisungen und Zeilenmarken zwischen select case und erstem
Vorkommen von case unzulässig.
Oder hab ich jetzt was falsch gemacht?
Gruß
Rolf
Hallo Rolf,
Dabei bleibt er aber auch wieder in dieser Schleife hängen,
d.h. er hoppelt endlos von C34 nach D34.
ich hab jetzt den Code nur überflogen und gar nicht so geschaut was er genau macht.
Aber im Code wird „Select“ benutzt, d.h. da der Code auf SelectionChange reagiert ruft er sich laufend selbst neu auf.
Baue mal zu Anfang dees Codes
application.enalbleevents=false
und am Ende
application.enalbleevents=true
ein. Vielleicht wars das schon. Wenn nicht muß man mal schauen.
Anweisungen und Zeilenmarken zwischen select case und erstem
Vorkommen von case unzulässig.
Darin ist doch alles gesagt.
Gruß
Reinhard
Select Case Target.Address
If (Not HatIhnSchon) Then
Case „$C$23“
Oder hab ich jetzt was falsch gemacht?
Gruß
Rolf
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:blush: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
Hallo Reinhard,
Baue mal zu Anfang dees Codes
application.enalbleevents=false
und am Ende
application.enalbleevents=true
ein. Vielleicht wars das schon.
Das wars tatsächlich, klappt wunderbar.
Nachdem ich das erste „l“ bei enalbleevents weggelassen habe,
war auch die Fehlermeldung weg *g*
Gruß und dank an alle
Rolf
Nachdem ich das erste „l“ bei enalbleevents weggelassen habe,
war auch die Fehlermeldung weg *g*
Hallo Rolf,
das war ein Test, ich wollte wissen ob du schon weißt daß was marode ist wenn der Debugger kleingeschriebenen Code nicht umwandelt 
Natürlich war es kein Schreibfehler. Ich war schon immer in Kramatig und Otografie sehr gut.
Auch das Komatrinken äh die Komaregheln liebte ich.
Gruß
Reinhard, Rechtschreibprofi *kicher*
Grüezi Rolf
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.
wo liegt mein Fehler?
Ja, Du selektierst ja schon wieder - meine Zeilen kommen auch ohne Ausschalten der Events zugange, weil gar nirgends wieder was selektiert wird. In deinem Code scheinen mir auch ein paar Zeilen nicht notwendig zu sein.
Aber inzwischen hast Du es ja irgendwie hingebogen, wenn ich das richtig mitbekommen habe?
Mit freundlichen Grüssen
Thomas Ramel