Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
832to836
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
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Problem mit Endlosschleife (@fcs, aber nicht nur)

Problem mit Endlosschleife (@fcs, aber nicht nur)
05.01.2007 00:15:30
proxima05
Hallo,
mit der hervorragenden Unterstützung von fcs habe ich den folgenden Code erstellen können; dieser funktioniert trefflich. Der Originalthread ist unter dem folgenden Link zu finden
https://www.herber.de/forum/messages/833716.html
Jetzt habe ich noch eine weitere Formel eingefügt (Formula4) (da der Rest funktioniert, lasse ich diesen mal weg); die Formula4 sieht in der Bearbeitungszeile wie folgt aus:
=WENN(A14"";(1/(1+$B$6/$B$7)^A14);" ")
==========================================

Private Sub CommandButton1_Click()
Dim Formula4 As String
Dim i As Integer
Dim iCount As range
Formula4 = "=IF(RC[-2]<>"""",(1/(1+R6C2/R7C2)^RC[-2]),"" "")"
If OptionButton1.Value = True Then
range("C14").Select
ActiveCell.FormulaR1C1 = Formula4
range("A15").FormulaR1C1 = Formula3
Zeile = 16
Do Until Cells(Zeile - 1, "A") > range("B5") * range("B7")
Cells(Zeile, "A").FormulaR1C1 = Formula3
Zeile = Zeile + 1
Loop
range("B15").FormulaR1C1 = Formula2
Zeile = 16
Do Until Cells(Zeile - 1, "B") > range("B5") * range("B7")
Cells(Zeile, "B").FormulaR1C1 = Formula2
Zeile = Zeile + 1                       'damit bearbeitet das Makro die jeweils nächste tieferliegende Zeile
Loop
range("C15").FormulaR1C1 = Formula4
Zeile = 16
Do Until Cells(Zeile - 1, "C") = range("A15")
Cells(Zeile, "C").FormulaR1C1 = Formula4
Zeile = Zeile + 1
Loop
End If
End Sub

==========================================
Der Code ...
**************************
range("C15").FormulaR1C1 = Formula4
Zeile = 16
Do Until Cells(Zeile - 1, "C") = range("A15")
Cells(Zeile, "C").FormulaR1C1 = Formula4
Zeile = Zeile + 1
Loop
**************************
... fügt zwar die Formel korrekt ein, läuft aber dann in eine Endlosschleife, die nur mit ESC abgebrochen werden kann. Im Code-Fenster wird dann die vorletzte Zeile (Zeile = Zeile +1) markiert. Woran kann das liegen, dass er kein Ende findet? Bei den anderen Formeln tritt das nicht auf; die "Do Until"-Weisung sieht da aber etwas anders aus:
"Do Until Cells(Zeile - 1, "B") > range("B5") * range("B7")"
Noch eine Frage:
Ich gehe immer in zwei Schritten vor (Ausgangspunkt jedesmal Zeile 14).
Dort füge ich über
range("C14").Select
ActiveCell.FormulaR1C1 = Formula4
die Formel ein und erfasse dann einen separaten Code, mit dem die Fortschreibung nach unten stattfindet. Kann man diese beiden codes zu einem verbinden?
Allerbesten Dank für Unterstützung.
Gruß
Ralph

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Endlosschleife (@fcs, aber nicht nur)
05.01.2007 00:29:52
Daniel
Hallo
du kennst aber schon den unterschied zwischen GRÖSSER, KLEINER und IST GLEICH
als Zeichen > Wenn "DO LOOP until Wert1 = Wert2" steht, wird die Schleife nur abgebrochen, wenn der Wert genau gleich ist. Da können schon Rundungsfehler sich auswirken. Deswegen als Abbruchbedingung lieber nicht benutzen, es sei denn, es sind eindeutige Werte wie 0 oder LEER.
ansonsten als Abbruchbedingung lieber GROSSER oder KLEINER verwenden.
(das hatte ich dir im ersten Thread aber auch schon geschieben.)
Gruß, Daniel
AW: Problem mit Endlosschleife (@fcs, aber nicht n
05.01.2007 11:00:46
proxima05
Hallo Daniel,
die Formel um die es geht sieht so aus:
=WENN(A14"";(1/(1+$B$6/$B$7)^A14);" ")
Wie kann ich die denn in eine Do-Until-Schleife packen, ohne dass sie sich 'festläuft'? Dass es mit "= range("A15") nicht geht, sehe ich ein.
Danke & Gruß
Ralph
Anzeige
AW: Problem mit Endlosschleife (@fcs, aber nicht n
05.01.2007 11:47:46
Daniel
Hallo
versuche doch bitte mal genau zu beschreiben, wann die Schleife abgebrochen werden soll.
Außderdem musst du berücksichtigen, daß A14 leer sein kann, dann enthält A15 einen Textstring.
Dieser wiederung kann natürlich nie gleich einer berechneten Zahl sein.
Für diesen Fall müsstest du mit einer IF-Abfrage verhindern, daß die Schleife gestartet wird.
Gruß, Daniel
AW: Problem mit Endlosschleife (@fcs, aber nicht n
05.01.2007 15:40:58
proxima05
Hallo Daniel,
an eine IF-formel habe ich auch schon gedacht ...
Wenn A14 leer ist, dann soll auch die Formel in C14
=WENN(A14"";(1/(1+$B$6/$B$7)^A14);" ")
nicht ausgeführt werden und einen Leer-String setzen.
Wenn A14 nicht leer ist, dann wird die Formel ausgeführt und über den Code solange in die darunterliegenden Zellen (C15, C16 ...) eingetragen, wie dann A15, A16 nicht leer sind.
Ich habe nochmal eine Tabelle angehängt.
https://www.herber.de/bbs/user/39413.xls
Danke & Gruß
Ralph
Anzeige
AW: Problem mit Endlosschleife (@fcs, aber nicht n
05.01.2007 20:40:40
Daniel
Hallo
so ganz verstehe ich dein Problem nicht.
Die Abfrage, ob die jeweilige Zelle in Spalte A leer ist, ist ja schon in der Formel drin, also brauchst du daß ja nicht nochmal extra über die Schleife abzufragen.
Ich würde einfach ermitteln, wie weit die Formel eingetragen werden muß und dann per Makro reinschreiben, ohne Schleife und weitere Prüfung.
also daß da

range("C15").FormulaR1C1 = Formula4
Zeile = 16
Do Until Cells(Zeile - 1, "C") = range("A15")
Cells(Zeile, "C").FormulaR1C1 = Formula4
Zeile = Zeile + 1
Loop

würde ich dadurch ersetzen würd ich komplet streichen und dadurch ersetzen:

Range("C14:C" & Range("A65536").end(xlup).row).forumlar1c1 = forumula4

gruß, Daniel
Anzeige
AW: Problem mit Endlosschleife (@fcs, aber nicht n
05.01.2007 21:07:25
proxima05
Daniel,
das mit der Abfrage, inwieweit die Formel eingetragen werden muss, war mir eben nicht bewusst, deswegen auch der Umweg über die Schleifen. Ich habe es jetzt mit Deinem "Einzeiler" versucht und es klappt.
Besten Dank, Gruß
Ralph
AW: Problem mit Endlosschleife (@fcs, aber nicht n
05.01.2007 22:12:39
Daniel
Hallo
schön das es klappt und Danke für die Rückmeldung.
dann schau doch bitte mal, ob du auch die anderen Schleifen so eleminieren kannst, dann liest und korregiert Luc:-? auch zukünftig deine Makros ;-)
Gruß, Daniel
AW: Problem mit Endlosschleife (@fcs, aber nicht n
05.01.2007 00:49:57
Luc:-?
Hallo Ralph,
das kann nur heißen, dass der Wert in A15 im Moment der Wiederholungsabfrage der Schleife in der zuvor gefüllten Zelle nicht erreicht oder aber bereits überschritten wurde. Vermutlich liegt der Fehler in Formula4.
Gruß Luc :-?
PS: Ansonsten entspricht das Pgm nicht meinem Pgmierstil, weshalb ich mich nicht eingehender damit auseinandersetzen will. ;-)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige