Problem mit Endlosschleife (@fcs, aber nicht nur)
05.01.2007 00:15:30
proxima05
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