VBA Schleifen Problem

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VBA Schleifen Problem
von: Julia559
Geschrieben am: 21.08.2015 19:08:46

Hallo zusammen,
ich habe mal wieder ein Schleifen Problem und weiß nicht woran das Ganze liegen könnte. Mittels einer Schleife soll der Wert der Zelle C212 sukzessive um 0,0001 reduziert werden. Parallel soll der Wert der Zelle C213 um 0,0001 erhöht werden. In dem gleichen Tabellenblatt habe ich weitere Formeln hinterlegt. Wenn die Schleife ausgeführt wird, verändern sich automatisch (druch die hinterlegten Excel Formeln) die Werte der Zelle AH334-AH339. In diesen Zellen (AH334-AH339) wird eine Rangordnung von 1-7 berechnet. Die Schleife soll nun solange laufen, wie die nachfolgende Rangordnung nicht verändert wird: AH333 = 7; AH334 = 6; AH335 = 3; AH336 = 1; AH337 = 2; AH338 = 5; AH339 = 4. D.h. die Schleife darf nur laufen, wenn die gegebene Rangordnung nicht verändert wird. Mein Makro funktioniert soweit, allerdings bricht es an der nicht richtigen Stelle ab. Setze ich nach Abschluss des Makros manuell die Zelle C212 um weitere 0,0001 nach unten und die Zelle C213 um weitere 0,0001 nach oben, bleibt die geforderte Rangfolge erhalten. Dennoch hat das Makro abgebrochen, was es eigentlich nicht sollte.
Hat jemand von euch eine Idee, an was dies liegen könnte? Nachfolgend findet ihr mein Makro dazu.
Vielen Dank für eure Hilfe.
Liebe Grüße,
Julia

Sub iteration2()
Dim i As Long, j As Long
Dim wert As Double
Dim wert1 As Double
Dim wert2 As Double
Dim wert3 As Double
Dim wert4 As Double
Dim wert5 As Double
Dim wert6 As Double
j = Sheets("Ergebnisse").Range("B1").Value
i = 0 ' Notnagel zur Verhinderung einer Endlosschleife
 Sheets("GP Robustheit").Select
Do
wert = Range("AH333").Value
wert1 = Range("AH334").Value
wert2 = Range("AH335").Value
wert3 = Range("AH336").Value
wert4 = Range("AH337").Value
wert5 = Range("AH338").Value
wert6 = Range("AH339").Value
Range("C212") = Range("C212") - 0.0001
Range("C213") = Range("C213") + 0.0001
i = i + 1
Loop While (0 <= Range("C212") <= 1) And (0 <= Range("C213") <= 1) And (Range("C212") + Range(" _
C213") = 1) And (wert = 7) And (wert1 = 6) And (wert2 = 3) And (wert3 = 1) And (wert4 = 2) And (wert5 = 5) And (wert6 = 4)
j = j + 1
If i > 1E+15 Then
Sheets("Ergebnisse").Cells(9 * j + 0, 2).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 3).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 3).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 4).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 5).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 5).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 6).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 6).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 2, 6).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 3, 6).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 4, 6).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 7).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 7).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 2, 7).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 3, 7).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 4, 7).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 8).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 8).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 2, 8).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 3, 8).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 4, 8).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 5, 8).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 9).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 9).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 2, 9).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 3, 9).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 4, 9).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 5, 9).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 6, 9).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 10).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 10).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 2, 10).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 3, 10).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 4, 10).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 5, 10).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 6, 10).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 7, 10).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 11).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 11).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 2, 11).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 3, 11).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 4, 11).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 5, 11).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 6, 11).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 7, 11).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 0, 12).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 1, 12).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 2, 12).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 3, 12).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 4, 12).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 5, 12).Value = "Iterationen: " & i
Sheets("Ergebnisse").Cells(9 * j + 6, 12).Value = "Iterationen: " & i
   
 Else
Sheets("Ergebnisse").Cells(9 * j + 0, 2).Value = Range("B333")
Sheets("Ergebnisse").Cells(9 * j + 0, 3).Value = Range("E333")
Sheets("Ergebnisse").Cells(9 * j + 1, 3).Value = Range("E334")
Sheets("Ergebnisse").Cells(9 * j + 0, 4).Value = Range("H333")
Sheets("Ergebnisse").Cells(9 * j + 0, 5).Value = Range("K333")
Sheets("Ergebnisse").Cells(9 * j + 1, 5).Value = Range("K334")
Sheets("Ergebnisse").Cells(9 * j + 0, 6).Value = Range("N333")
Sheets("Ergebnisse").Cells(9 * j + 1, 6).Value = Range("N334")
Sheets("Ergebnisse").Cells(9 * j + 2, 6).Value = Range("N335")
Sheets("Ergebnisse").Cells(9 * j + 3, 6).Value = Range("N336")
Sheets("Ergebnisse").Cells(9 * j + 4, 6).Value = Range("N337")
Sheets("Ergebnisse").Cells(9 * j + 0, 7).Value = Range("Q333")
Sheets("Ergebnisse").Cells(9 * j + 1, 7).Value = Range("Q334")
Sheets("Ergebnisse").Cells(9 * j + 2, 7).Value = Range("Q335")
Sheets("Ergebnisse").Cells(9 * j + 3, 7).Value = Range("Q336")
Sheets("Ergebnisse").Cells(9 * j + 4, 7).Value = Range("Q337")
Sheets("Ergebnisse").Cells(9 * j + 0, 8).Value = Range("T333")
Sheets("Ergebnisse").Cells(9 * j + 1, 8).Value = Range("T334")
Sheets("Ergebnisse").Cells(9 * j + 2, 8).Value = Range("T335")
Sheets("Ergebnisse").Cells(9 * j + 3, 8).Value = Range("T336")
Sheets("Ergebnisse").Cells(9 * j + 4, 8).Value = Range("T337")
Sheets("Ergebnisse").Cells(9 * j + 5, 8).Value = Range("T338")
Sheets("Ergebnisse").Cells(9 * j + 0, 9).Value = Range("W333")
Sheets("Ergebnisse").Cells(9 * j + 1, 9).Value = Range("W334")
Sheets("Ergebnisse").Cells(9 * j + 2, 9).Value = Range("W335")
Sheets("Ergebnisse").Cells(9 * j + 3, 9).Value = Range("W336")
Sheets("Ergebnisse").Cells(9 * j + 4, 9).Value = Range("W337")
Sheets("Ergebnisse").Cells(9 * j + 5, 9).Value = Range("W338")
Sheets("Ergebnisse").Cells(9 * j + 6, 9).Value = Range("W339")
Sheets("Ergebnisse").Cells(9 * j + 0, 10).Value = Range("Z333")
Sheets("Ergebnisse").Cells(9 * j + 1, 10).Value = Range("Z334")
Sheets("Ergebnisse").Cells(9 * j + 2, 10).Value = Range("Z335")
Sheets("Ergebnisse").Cells(9 * j + 3, 10).Value = Range("Z336")
Sheets("Ergebnisse").Cells(9 * j + 4, 10).Value = Range("Z337")
Sheets("Ergebnisse").Cells(9 * j + 5, 10).Value = Range("Z338")
Sheets("Ergebnisse").Cells(9 * j + 6, 10).Value = Range("Z339")
Sheets("Ergebnisse").Cells(9 * j + 7, 10).Value = Range("Z340")
Sheets("Ergebnisse").Cells(9 * j + 0, 11).Value = Range("AC333")
Sheets("Ergebnisse").Cells(9 * j + 1, 11).Value = Range("AC334")
Sheets("Ergebnisse").Cells(9 * j + 2, 11).Value = Range("AC335")
Sheets("Ergebnisse").Cells(9 * j + 3, 11).Value = Range("AC336")
Sheets("Ergebnisse").Cells(9 * j + 4, 11).Value = Range("AC337")
Sheets("Ergebnisse").Cells(9 * j + 5, 11).Value = Range("AC338")
Sheets("Ergebnisse").Cells(9 * j + 6, 11).Value = Range("AC339")
Sheets("Ergebnisse").Cells(9 * j + 7, 11).Value = Range("AC340")
Sheets("Ergebnisse").Cells(9 * j + 0, 12).Value = Range("AF333")
Sheets("Ergebnisse").Cells(9 * j + 1, 12).Value = Range("AF334")
Sheets("Ergebnisse").Cells(9 * j + 2, 12).Value = Range("AF335")
Sheets("Ergebnisse").Cells(9 * j + 3, 12).Value = Range("AF336")
Sheets("Ergebnisse").Cells(9 * j + 4, 12).Value = Range("AF337")
Sheets("Ergebnisse").Cells(9 * j + 5, 12).Value = Range("AF338")
Sheets("Ergebnisse").Cells(9 * j + 6, 12).Value = Range("AF339")
Sheets("Ergebnisse").Cells(9 * j + 0, 14).Value = Sheets("GP Robustheit Basis").Range("C212")
Sheets("Ergebnisse").Cells(9 * j + 1, 14) = Range("A212")
Sheets("Ergebnisse").Cells(9 * j + 0, 15).Value = Range("C212")
Sheets("Ergebnisse").Cells(9 * j + 0, 16).Value = Sheets("GP Robustheit Basis").Range("C212") -  _
Range("C212")
Sheets("Ergebnisse").Cells(9 * j + 0, 17).Value = Sheets("GP Robustheit Basis").Range("C213")
Sheets("Ergebnisse").Cells(9 * j + 1, 17) = Range("A213")
Sheets("Ergebnisse").Cells(9 * j + 0, 18).Value = Range("C213")
Sheets("Ergebnisse").Cells(9 * j + 0, 19).Value = Sheets("GP Robustheit Basis").Range("C213") -  _
Range("C213")
Sheets("Ergebnisse").Cells(9 * j + 0, 21).Value = Sheets("GP Robustheit Basis").Range("D333")
Sheets("Ergebnisse").Cells(9 * j + 0, 22).Value = Sheets("GP Robustheit").Range("D333")
Sheets("Ergebnisse").Cells(9 * j + 0, 23).Value = Sheets("GP Robustheit Basis").Range("G333")
Sheets("Ergebnisse").Cells(9 * j + 1, 23).Value = Sheets("GP Robustheit Basis").Range("G334")
Sheets("Ergebnisse").Cells(9 * j + 0, 24).Value = Sheets("GP Robustheit").Range("G333")
Sheets("Ergebnisse").Cells(9 * j + 1, 24).Value = Sheets("GP Robustheit").Range("G334")
Sheets("Ergebnisse").Cells(9 * j + 0, 25).Value = Sheets("GP Robustheit Basis").Range("J333")
Sheets("Ergebnisse").Cells(9 * j + 0, 26).Value = Sheets("GP Robustheit").Range("J333")
Sheets("Ergebnisse").Cells(9 * j + 0, 27).Value = Sheets("GP Robustheit Basis").Range("M333")
Sheets("Ergebnisse").Cells(9 * j + 1, 27).Value = Sheets("GP Robustheit Basis").Range("M334")
Sheets("Ergebnisse").Cells(9 * j + 0, 28).Value = Sheets("GP Robustheit").Range("M333")
Sheets("Ergebnisse").Cells(9 * j + 1, 28).Value = Sheets("GP Robustheit").Range("M334")
Sheets("Ergebnisse").Cells(9 * j + 0, 29).Value = Sheets("GP Robustheit Basis").Range("P333")
Sheets("Ergebnisse").Cells(9 * j + 1, 29).Value = Sheets("GP Robustheit Basis").Range("P334")
Sheets("Ergebnisse").Cells(9 * j + 2, 29).Value = Sheets("GP Robustheit Basis").Range("P335")
Sheets("Ergebnisse").Cells(9 * j + 3, 29).Value = Sheets("GP Robustheit Basis").Range("P336")
Sheets("Ergebnisse").Cells(9 * j + 4, 29).Value = Sheets("GP Robustheit Basis").Range("P337")
Sheets("Ergebnisse").Cells(9 * j + 0, 30).Value = Sheets("GP Robustheit").Range("P333")
Sheets("Ergebnisse").Cells(9 * j + 1, 30).Value = Sheets("GP Robustheit").Range("P334")
Sheets("Ergebnisse").Cells(9 * j + 2, 30).Value = Sheets("GP Robustheit").Range("P335")
Sheets("Ergebnisse").Cells(9 * j + 3, 30).Value = Sheets("GP Robustheit").Range("P336")
Sheets("Ergebnisse").Cells(9 * j + 4, 30).Value = Sheets("GP Robustheit").Range("P337")
Sheets("Ergebnisse").Cells(9 * j + 0, 31).Value = Sheets("GP Robustheit Basis").Range("S333")
Sheets("Ergebnisse").Cells(9 * j + 1, 31).Value = Sheets("GP Robustheit Basis").Range("S334")
Sheets("Ergebnisse").Cells(9 * j + 2, 31).Value = Sheets("GP Robustheit Basis").Range("S335")
Sheets("Ergebnisse").Cells(9 * j + 3, 31).Value = Sheets("GP Robustheit Basis").Range("S336")
Sheets("Ergebnisse").Cells(9 * j + 4, 31).Value = Sheets("GP Robustheit Basis").Range("S337")
Sheets("Ergebnisse").Cells(9 * j + 0, 32).Value = Sheets("GP Robustheit").Range("S333")
Sheets("Ergebnisse").Cells(9 * j + 1, 32).Value = Sheets("GP Robustheit").Range("S334")
Sheets("Ergebnisse").Cells(9 * j + 2, 32).Value = Sheets("GP Robustheit").Range("S335")
Sheets("Ergebnisse").Cells(9 * j + 3, 32).Value = Sheets("GP Robustheit").Range("S336")
Sheets("Ergebnisse").Cells(9 * j + 4, 32).Value = Sheets("GP Robustheit").Range("S337")
Sheets("Ergebnisse").Cells(9 * j + 0, 33).Value = Sheets("GP Robustheit Basis").Range("V333")
Sheets("Ergebnisse").Cells(9 * j + 1, 33).Value = Sheets("GP Robustheit Basis").Range("V334")
Sheets("Ergebnisse").Cells(9 * j + 2, 33).Value = Sheets("GP Robustheit Basis").Range("V335")
Sheets("Ergebnisse").Cells(9 * j + 3, 33).Value = Sheets("GP Robustheit Basis").Range("V336")
Sheets("Ergebnisse").Cells(9 * j + 4, 33).Value = Sheets("GP Robustheit Basis").Range("V337")
Sheets("Ergebnisse").Cells(9 * j + 5, 33).Value = Sheets("GP Robustheit Basis").Range("V338")
Sheets("Ergebnisse").Cells(9 * j + 0, 34).Value = Sheets("GP Robustheit").Range("V333")
Sheets("Ergebnisse").Cells(9 * j + 1, 34).Value = Sheets("GP Robustheit").Range("V334")
Sheets("Ergebnisse").Cells(9 * j + 2, 34).Value = Sheets("GP Robustheit").Range("V335")
Sheets("Ergebnisse").Cells(9 * j + 3, 34).Value = Sheets("GP Robustheit").Range("V336")
Sheets("Ergebnisse").Cells(9 * j + 4, 34).Value = Sheets("GP Robustheit").Range("V337")
Sheets("Ergebnisse").Cells(9 * j + 5, 34).Value = Sheets("GP Robustheit").Range("V338")
Sheets("Ergebnisse").Cells(9 * j + 0, 35).Value = Sheets("GP Robustheit Basis").Range("Y333")
Sheets("Ergebnisse").Cells(9 * j + 1, 35).Value = Sheets("GP Robustheit Basis").Range("Y334")
Sheets("Ergebnisse").Cells(9 * j + 2, 35).Value = Sheets("GP Robustheit Basis").Range("Y335")
Sheets("Ergebnisse").Cells(9 * j + 3, 35).Value = Sheets("GP Robustheit Basis").Range("Y336")
Sheets("Ergebnisse").Cells(9 * j + 4, 35).Value = Sheets("GP Robustheit Basis").Range("Y337")
Sheets("Ergebnisse").Cells(9 * j + 5, 35).Value = Sheets("GP Robustheit Basis").Range("Y338")
Sheets("Ergebnisse").Cells(9 * j + 6, 35).Value = Sheets("GP Robustheit Basis").Range("Y339")
Sheets("Ergebnisse").Cells(9 * j + 0, 36).Value = Sheets("GP Robustheit").Range("Y333")
Sheets("Ergebnisse").Cells(9 * j + 1, 36).Value = Sheets("GP Robustheit").Range("Y334")
Sheets("Ergebnisse").Cells(9 * j + 2, 36).Value = Sheets("GP Robustheit").Range("Y335")
Sheets("Ergebnisse").Cells(9 * j + 3, 36).Value = Sheets("GP Robustheit").Range("Y336")
Sheets("Ergebnisse").Cells(9 * j + 4, 36).Value = Sheets("GP Robustheit").Range("Y337")
Sheets("Ergebnisse").Cells(9 * j + 5, 36).Value = Sheets("GP Robustheit").Range("Y338")
Sheets("Ergebnisse").Cells(9 * j + 6, 36).Value = Sheets("GP Robustheit").Range("Y339")
Sheets("Ergebnisse").Cells(9 * j + 0, 37).Value = Sheets("GP Robustheit Basis").Range("AB333")
Sheets("Ergebnisse").Cells(9 * j + 1, 37).Value = Sheets("GP Robustheit Basis").Range("AB334")
Sheets("Ergebnisse").Cells(9 * j + 2, 37).Value = Sheets("GP Robustheit Basis").Range("AB335")
Sheets("Ergebnisse").Cells(9 * j + 3, 37).Value = Sheets("GP Robustheit Basis").Range("AB336")
Sheets("Ergebnisse").Cells(9 * j + 4, 37).Value = Sheets("GP Robustheit Basis").Range("AB337")
Sheets("Ergebnisse").Cells(9 * j + 5, 37).Value = Sheets("GP Robustheit Basis").Range("AB338")
Sheets("Ergebnisse").Cells(9 * j + 6, 37).Value = Sheets("GP Robustheit Basis").Range("AB339")
Sheets("Ergebnisse").Cells(9 * j + 7, 37).Value = Sheets("GP Robustheit Basis").Range("AB340")
Sheets("Ergebnisse").Cells(9 * j + 0, 38).Value = Sheets("GP Robustheit").Range("AB333")
Sheets("Ergebnisse").Cells(9 * j + 1, 38).Value = Sheets("GP Robustheit").Range("AB334")
Sheets("Ergebnisse").Cells(9 * j + 2, 38).Value = Sheets("GP Robustheit").Range("AB335")
Sheets("Ergebnisse").Cells(9 * j + 3, 38).Value = Sheets("GP Robustheit").Range("AB336")
Sheets("Ergebnisse").Cells(9 * j + 4, 38).Value = Sheets("GP Robustheit").Range("AB337")
Sheets("Ergebnisse").Cells(9 * j + 5, 38).Value = Sheets("GP Robustheit").Range("AB338")
Sheets("Ergebnisse").Cells(9 * j + 6, 38).Value = Sheets("GP Robustheit").Range("AB339")
Sheets("Ergebnisse").Cells(9 * j + 7, 38).Value = Sheets("GP Robustheit").Range("AB340")
Sheets("Ergebnisse").Cells(9 * j + 0, 39).Value = Sheets("GP Robustheit Basis").Range("AE333")
Sheets("Ergebnisse").Cells(9 * j + 1, 39).Value = Sheets("GP Robustheit Basis").Range("AE334")
Sheets("Ergebnisse").Cells(9 * j + 2, 39).Value = Sheets("GP Robustheit Basis").Range("AE335")
Sheets("Ergebnisse").Cells(9 * j + 3, 39).Value = Sheets("GP Robustheit Basis").Range("AE336")
Sheets("Ergebnisse").Cells(9 * j + 4, 39).Value = Sheets("GP Robustheit Basis").Range("AE337")
Sheets("Ergebnisse").Cells(9 * j + 5, 39).Value = Sheets("GP Robustheit Basis").Range("AE338")
Sheets("Ergebnisse").Cells(9 * j + 6, 39).Value = Sheets("GP Robustheit Basis").Range("AE339")
Sheets("Ergebnisse").Cells(9 * j + 7, 39).Value = Sheets("GP Robustheit Basis").Range("AE340")
Sheets("Ergebnisse").Cells(9 * j + 0, 40).Value = Sheets("GP Robustheit").Range("AE333")
Sheets("Ergebnisse").Cells(9 * j + 1, 40).Value = Sheets("GP Robustheit").Range("AE334")
Sheets("Ergebnisse").Cells(9 * j + 2, 40).Value = Sheets("GP Robustheit").Range("AE335")
Sheets("Ergebnisse").Cells(9 * j + 3, 40).Value = Sheets("GP Robustheit").Range("AE336")
Sheets("Ergebnisse").Cells(9 * j + 4, 40).Value = Sheets("GP Robustheit").Range("AE337")
Sheets("Ergebnisse").Cells(9 * j + 5, 40).Value = Sheets("GP Robustheit").Range("AE338")
Sheets("Ergebnisse").Cells(9 * j + 6, 40).Value = Sheets("GP Robustheit").Range("AE339")
Sheets("Ergebnisse").Cells(9 * j + 7, 40).Value = Sheets("GP Robustheit").Range("AE340")
Sheets("Ergebnisse").Cells(9 * j + 0, 41).Value = Sheets("GP Robustheit Basis").Range("AH333")
Sheets("Ergebnisse").Cells(9 * j + 1, 41).Value = Sheets("GP Robustheit Basis").Range("AH334")
Sheets("Ergebnisse").Cells(9 * j + 2, 41).Value = Sheets("GP Robustheit Basis").Range("AH335")
Sheets("Ergebnisse").Cells(9 * j + 3, 41).Value = Sheets("GP Robustheit Basis").Range("AH336")
Sheets("Ergebnisse").Cells(9 * j + 4, 41).Value = Sheets("GP Robustheit Basis").Range("AH337")
Sheets("Ergebnisse").Cells(9 * j + 5, 41).Value = Sheets("GP Robustheit Basis").Range("AH338")
Sheets("Ergebnisse").Cells(9 * j + 6, 41).Value = Sheets("GP Robustheit Basis").Range("AH339")
Sheets("Ergebnisse").Cells(9 * j + 0, 42).Value = Sheets("GP Robustheit").Range("AH333")
Sheets("Ergebnisse").Cells(9 * j + 1, 42).Value = Sheets("GP Robustheit").Range("AH334")
Sheets("Ergebnisse").Cells(9 * j + 2, 42).Value = Sheets("GP Robustheit").Range("AH335")
Sheets("Ergebnisse").Cells(9 * j + 3, 42).Value = Sheets("GP Robustheit").Range("AH336")
Sheets("Ergebnisse").Cells(9 * j + 4, 42).Value = Sheets("GP Robustheit").Range("AH337")
Sheets("Ergebnisse").Cells(9 * j + 5, 42).Value = Sheets("GP Robustheit").Range("AH338")
Sheets("Ergebnisse").Cells(9 * j + 6, 42).Value = Sheets("GP Robustheit").Range("AH339")
Sheets("Ergebnisse").Cells(9 * j + 0, 44).Value = Sheets("GP Robustheit Basis").Range("B333") -  _
Range("B333")
Sheets("Ergebnisse").Cells(9 * j + 0, 45).Value = Sheets("GP Robustheit Basis").Range("E333") -  _
Range("E333")
Sheets("Ergebnisse").Cells(9 * j + 1, 45).Value = Sheets("GP Robustheit Basis").Range("E334") -  _
Range("E334")
Sheets("Ergebnisse").Cells(9 * j + 0, 46).Value = Sheets("GP Robustheit Basis").Range("H333") -  _
Range("H333")
Sheets("Ergebnisse").Cells(9 * j + 0, 47).Value = Sheets("GP Robustheit Basis").Range("K333") -  _
Range("K333")
Sheets("Ergebnisse").Cells(9 * j + 1, 47).Value = Sheets("GP Robustheit Basis").Range("K334") -  _
Range("K334")
Sheets("Ergebnisse").Cells(9 * j + 0, 48).Value = Sheets("GP Robustheit Basis").Range("N333") -  _
Range("N333")
Sheets("Ergebnisse").Cells(9 * j + 1, 48).Value = Sheets("GP Robustheit Basis").Range("N334") -  _
Range("N334")
Sheets("Ergebnisse").Cells(9 * j + 2, 48).Value = Sheets("GP Robustheit Basis").Range("N335") -  _
Range("N335")
Sheets("Ergebnisse").Cells(9 * j + 3, 48).Value = Sheets("GP Robustheit Basis").Range("N336") -  _
Range("N336")
Sheets("Ergebnisse").Cells(9 * j + 4, 48).Value = Sheets("GP Robustheit Basis").Range("N337") -  _
Range("N337")
Sheets("Ergebnisse").Cells(9 * j + 0, 49).Value = Sheets("GP Robustheit Basis").Range("Q333") -  _
Range("Q333")
Sheets("Ergebnisse").Cells(9 * j + 1, 49).Value = Sheets("GP Robustheit Basis").Range("Q334") -  _
Range("Q334")
Sheets("Ergebnisse").Cells(9 * j + 2, 49).Value = Sheets("GP Robustheit Basis").Range("Q335") -  _
Range("Q335")
Sheets("Ergebnisse").Cells(9 * j + 3, 49).Value = Sheets("GP Robustheit Basis").Range("Q336") -  _
Range("Q336")
Sheets("Ergebnisse").Cells(9 * j + 4, 49).Value = Sheets("GP Robustheit Basis").Range("Q337") -  _
Range("Q337")
Sheets("Ergebnisse").Cells(9 * j + 0, 50).Value = Sheets("GP Robustheit Basis").Range("T333") -  _
Range("T333")
Sheets("Ergebnisse").Cells(9 * j + 1, 50).Value = Sheets("GP Robustheit Basis").Range("T334") -  _
Range("T334")
Sheets("Ergebnisse").Cells(9 * j + 2, 50).Value = Sheets("GP Robustheit Basis").Range("T335") -  _
Range("T335")
Sheets("Ergebnisse").Cells(9 * j + 3, 50).Value = Sheets("GP Robustheit Basis").Range("T336") -  _
Range("T336")
Sheets("Ergebnisse").Cells(9 * j + 4, 50).Value = Sheets("GP Robustheit Basis").Range("T337") -  _
Range("T337")
Sheets("Ergebnisse").Cells(9 * j + 5, 50).Value = Sheets("GP Robustheit Basis").Range("T338") -  _
Range("T338")
Sheets("Ergebnisse").Cells(9 * j + 0, 51).Value = Sheets("GP Robustheit Basis").Range("W333") -  _
Range("W333")
Sheets("Ergebnisse").Cells(9 * j + 1, 51).Value = Sheets("GP Robustheit Basis").Range("W334") -  _
Range("W334")
Sheets("Ergebnisse").Cells(9 * j + 2, 51).Value = Sheets("GP Robustheit Basis").Range("W335") -  _
Range("W335")
Sheets("Ergebnisse").Cells(9 * j + 3, 51).Value = Sheets("GP Robustheit Basis").Range("W336") -  _
Range("W336")
Sheets("Ergebnisse").Cells(9 * j + 4, 51).Value = Sheets("GP Robustheit Basis").Range("W337") -  _
Range("W337")
Sheets("Ergebnisse").Cells(9 * j + 5, 51).Value = Sheets("GP Robustheit Basis").Range("W338") -  _
Range("W338")
Sheets("Ergebnisse").Cells(9 * j + 6, 51).Value = Sheets("GP Robustheit Basis").Range("W339") -  _
Range("W339")
Sheets("Ergebnisse").Cells(9 * j + 0, 52).Value = Sheets("GP Robustheit Basis").Range("Z333") -  _
Range("Z333")
Sheets("Ergebnisse").Cells(9 * j + 1, 52).Value = Sheets("GP Robustheit Basis").Range("Z334") -  _
Range("Z334")
Sheets("Ergebnisse").Cells(9 * j + 2, 52).Value = Sheets("GP Robustheit Basis").Range("Z335") -  _
Range("Z335")
Sheets("Ergebnisse").Cells(9 * j + 3, 52).Value = Sheets("GP Robustheit Basis").Range("Z336") -  _
Range("Z336")
Sheets("Ergebnisse").Cells(9 * j + 4, 52).Value = Sheets("GP Robustheit Basis").Range("Z337") -  _
Range("Z337")
Sheets("Ergebnisse").Cells(9 * j + 5, 52).Value = Sheets("GP Robustheit Basis").Range("Z338") -  _
Range("Z338")
Sheets("Ergebnisse").Cells(9 * j + 6, 52).Value = Sheets("GP Robustheit Basis").Range("Z339") -  _
Range("Z339")
Sheets("Ergebnisse").Cells(9 * j + 7, 52).Value = Sheets("GP Robustheit Basis").Range("Z340") -  _
Range("Z340")
Sheets("Ergebnisse").Cells(9 * j + 0, 53).Value = Sheets("GP Robustheit Basis").Range("AC333") - _
 Range("AC333")
Sheets("Ergebnisse").Cells(9 * j + 1, 53).Value = Sheets("GP Robustheit Basis").Range("AC334") - _
 Range("AC334")
Sheets("Ergebnisse").Cells(9 * j + 2, 53).Value = Sheets("GP Robustheit Basis").Range("AC335") - _
 Range("AC335")
Sheets("Ergebnisse").Cells(9 * j + 3, 53).Value = Sheets("GP Robustheit Basis").Range("AC336") - _
 Range("AC336")
Sheets("Ergebnisse").Cells(9 * j + 4, 53).Value = Sheets("GP Robustheit Basis").Range("AC337") - _
 Range("AC337")
Sheets("Ergebnisse").Cells(9 * j + 5, 53).Value = Sheets("GP Robustheit Basis").Range("AC338") - _
 Range("AC338")
Sheets("Ergebnisse").Cells(9 * j + 6, 53).Value = Sheets("GP Robustheit Basis").Range("AC339") - _
 Range("AC339")
Sheets("Ergebnisse").Cells(9 * j + 7, 53).Value = Sheets("GP Robustheit Basis").Range("AC340") - _
 Range("AC340")
Sheets("Ergebnisse").Cells(9 * j + 0, 54).Value = Sheets("GP Robustheit Basis").Range("AF333") - _
 Range("AF333")
Sheets("Ergebnisse").Cells(9 * j + 1, 54).Value = Sheets("GP Robustheit Basis").Range("AF334") - _
 Range("AF334")
Sheets("Ergebnisse").Cells(9 * j + 2, 54).Value = Sheets("GP Robustheit Basis").Range("AF335") - _
 Range("AF335")
Sheets("Ergebnisse").Cells(9 * j + 3, 54).Value = Sheets("GP Robustheit Basis").Range("AF336") - _
 Range("AF336")
Sheets("Ergebnisse").Cells(9 * j + 4, 54).Value = Sheets("GP Robustheit Basis").Range("AF337") - _
 Range("AF337")
Sheets("Ergebnisse").Cells(9 * j + 5, 54).Value = Sheets("GP Robustheit Basis").Range("AF338") - _
 Range("AF338")
Sheets("Ergebnisse").Cells(9 * j + 6, 54).Value = Sheets("GP Robustheit Basis").Range("AF339") - _
 Range("AF339")
End If
Sheets("Ergebnisse").Range("B1").Value = j
End Sub

Bild

Betrifft: AW: VBA Schleifen Problem
von: Michael
Geschrieben am: 21.08.2015 19:45:04
Hi Julia559,
wenn Du schon meinen Kommentar mit "Notnagel" im Code stehen läßt, solltest Du ihn auch verwenden.
Der ganze Code ist mir zu unübersichtlich, um das alles ins Blaue hinein zu testen.
Der erste Eindruck ist aber, daß Du mit einer "fußgesteuerten" Schleife (die Abbruchbedingung steht unten) nicht glücklich wirst: i wird immer mindestens 1 Mal hochgezählt und hat insofern auch IMMER einen Wert von mindestens 1, so daß Deine If nach der Schleife immer WAHR ist.
Beispiel zum Testen:

Sub schleifen()
Dim i&
Dim ups As Boolean
ups = True
i = 0
Do
ups = False
i = i + 1
Loop While ups And i < 10000 ' wenn schon "Notnagel", dann auch einsetzen
MsgBox "i = " & i & " ups = " & ups
End Sub
Versuche doch ne Kombination von While - Wend.
Schöne Grüße,
Michael

Bild

Betrifft: entschuldigung, hab mich verschaut!
von: Michael
Geschrieben am: 21.08.2015 20:38:41
Hi Julia559,
sorry, hab mich verschaut, irgendwie bin ich von ..E-15 ausgegangen...
Aber es wäre trotzdem nett, wenn Du ne Beispieldatei basteln könntest, mit der man was nachvollziehen kann.
Schöne Grüße,
Michael
P.S.: Ich glaub, ich hab's:
Deine Formulierung der Abbruchbedingung ist zwar mathematisch nachvollziehbar, aber Excel "denkt" da anders:

Sub test()
If (5 > 3 > 1) Then
  MsgBox "1.: ok"
 Else
  MsgBox "1.: " & (5 > 3 > 1)
End If
If (5 > 3) And (3 > 1) Then
  MsgBox "2.: " & ((5 > 3) And (3 > 1))
 Else
  MsgBox "2.: " & ((5 > 3) And (3 > 1))
End If
End Sub
X rechnet von links nach rechts, d.h. aus dem ersten 
Vergleich: 5 > 3 wird ein WAHRHEITSWERT gebildet, der 
dann mit > 1 verglichen wird!


Bild

Betrifft: AW: entschuldigung, hab mich verschaut!
von: Julia559
Geschrieben am: 21.08.2015 22:44:47
Hallo Michael,
vielen vielen Dank für den Tipp. Ich habe es ausprobiert und es liegt tatsächlich an der Bedingung. Gekürzt sieht der Code wie folgt aus... Er funktioniert nun auch so, wie er soll. Allerdings hört die Schleife nicht bei 0,0000 auf, sondern bei -0,0001, d.h. sie läuft genau einmal zu viel. Hast du noch eine Idee, wie ich das in dem Code anpassen könnte?
Vielen Dank für deine Hilfe.
Julia

Sub test()
 Sheets("GP Robustheit").Select
Do While (Range("AH336").Value < Range("AH337").Value) And (Range("AH337").Value < Range("AH335" _
).Value) And (Range("AH335").Value < Range("AH339").Value) And (Range("AH339").Value < Range("AH338").Value) And (Range("AH338").Value < Range("AH334").Value) And (Range("AH334").Value < Range("AH333").Value)
If Range("C212") = 0 Or Range("C212") = 1 Then
Exit Do
End If
Range("C212") = Range("C212") - 0.0001
Range("C213") = Range("C213") + 0.0001
Loop
End Sub


Bild

Betrifft: Mal ins Blaue,
von: Michael
Geschrieben am: 22.08.2015 13:09:37
Julia,
offensichtlich kommt der Rattenschwanz an Bedingungen nach dem While nicht zum Zug, wenn die "Endwerte" von C212/C213 tatsächlich erreicht bzw. überschritten werden.
Also liegt der Knackpunkt bei...

If Range("C212") = 0 Or Range("C212") = 1 Then

... und da hast Du einen Hund drin, denn die hochgezählte Zelle ist C213, im If steht aber rechts C212.
Wenn es das war, soll's mir recht sein, ansonsten schreib mir bitte noch, welche Werte die beiden Zellen vor Beginn der Schleife haben.
Schöne Grüße,
Michael
P.S.: Da es wirklich viele Berechnungen sind, würde ich hie und da etwas optimieren, aber ich sende erst Mal die Antwort ab - melde Dich halt noch mal.

Bild

Betrifft: Nachtrag
von: Michael
Geschrieben am: 22.08.2015 16:18:27
Hi Julia,
jetzt habe ich doch mit der Optimierung (Teil A) herumgespielt, und dabei ist mir aufgefallen, daß der 0-Wert ja nie exakt erreicht wird: in Deinem Code ganz oben hast Du ja dementsprechend nach der Schleife mit
If i > 1E+15 Then
weitergearbeitet.
Wenn nun die zwei Umstände zusammenkommen, daß Du wie oben nur auf C212 prüfst und C213 vergißt, ist mir klar, daß mit
If Range("C212") = 0 Or Range("C212") = 1 Then
die Abbruchbedingung "nie" erreicht wird.
Anbei ne Datei mit verschiedenen, schrittweisen Optimierungen, die im Modul von unten nach oben und im Blatt von oben nach unten angeordnet sind.
Rufe die Subs mal der Reihe nach auf, und wenn Du sie alle ausgeführt hast, wirst Du ein Optimierungsergebnis in der Größenordnung von 300 sehen.
Um das einzubauen, ist allerdings je nach Komplexität Deiner Berechnung doch etwas Arbeit nötig.
Die Ausgabe ist irrwitzig umfangreich, aber mir ist auf Anhieb keine mathematische Gesetzmäßigkeit eingefallen. Naja, die ist ja auch nicht sooo zeitkritisch.
Nur so viel: Du notierst standardmäßig etwa ...

Sheets("Ergebnisse").Cells(9 * j + 0, 2).Value = "Iterationen: " & i
    Sheets("Ergebnisse").Cells(9 * j + 0, 3).Value = "Iterationen: " & i
    Sheets("Ergebnisse").Cells(9 * j + 1, 3).Value = "Iterationen: " & i

... wobei "Iterationen: " & i zumindest im ersten Zweig IMMER vorkommt, und 9*j insgesamt IMMER.
Beides erfordert jeweils eine Rechenoperation. Was hindert Dich dran, zwei Variablen einzuführen:
DIM ausgabe as String
DIM j9 as long
und vor der Ausgabe zu schreiben:
ausgabe = "Iterationen: " & i
j9 = 9 * j
und dann weiter:
Sheets("Ergebnisse").Cells(j9 + 0, 2).Value = ausgabe
' usw.
Die Datei: https://www.herber.de/bbs/user/99773.xls
Schöne Grüße,
Michael

Bild

Betrifft: AW: Nachtrag
von: Julia559
Geschrieben am: 23.08.2015 22:26:25
Hallo Michael,
erst einmal vielen Dank für deine Tipps und Ratschläge. Da der ganze Code wirklich sehr umfangreich und komplex wurde, habe ich mir nun die Mühe gemacht, einen neuen Code zu schreiben. Nun funktioniert alles wie gewollt. Ich hatte wirklich einige Bestandteile in dem Code, die ich gar nicht brauchte.
Vielen Dank noch einmal.
Liebe Grüße,
Julia

Bild

Betrifft: freut mich, danke für die Rückmeldung,
von: Michael
Geschrieben am: 24.08.2015 15:20:17
Julia,
ich habe gestern noch ein bißchen herumgespielt und doch was gefunden, was die Ausgabe vereinfachen könnte.
Ich lade Dir die Datei einfach mal kommentarlos hoch: https://www.herber.de/bbs/user/99804.xls
Von wegen kommentarlos.
Also:
1. habe ich mir angesehen, wie die Ausgaben aussehen, indem ich einfach Zellen gefärbt habe, unter Zuhilfenahme der "extrahierten" Spalten- und Zeilennummern: internes Blatt: Sub malSchauen
2. Das siehst Du unter "Ergebnisse", und hier fallen denn schon Gesetzmäßigkeiten auf...
3. ... so daß man Zuweisungen entweder anhand einer Zeilen-/Spalten-Liste vornehmen kann
(internes Blatt Sub WerteZuweisen() - sieh Dir bitte "Ergebnisse (2)" an, starte das Makro und sieh es Dir nochmal an) oder ...
4. die Zellen, denen Werte zugewiesen werden sollen, "grafisch" mit einem "x" versieht, und zwar in "internes_Blatt_Grafisch", aus dem sich das dazugehörige Makro Sub WerteZuweisenGrafisch() in "Ergebnisse (3)" die passenden Werte holt und die Zuweisungen erledigt.
Der Punkt dabei ist, daß der Code für die Ausgabe nur aus ein paar wenigen Zeilen besteht: das ist weniger fehleranfällig und viel übersichtlicher:

Sub WerteZuweisenGrafisch()
Dim aus As Variant
Dim j9 As Long, i As Long
Dim spalte As Long, zeilenDiff As Long
Dim c As Range
Const vonzeile = 333
zeilenDiff = vonzeile - 9
For Each c In Sheets("internes_Blatt_Grafisch").Range("B9:L16")
  If c.Value = "x" Then
    spalte = 2 * c.Column - 4
    Sheets("Ergebnisse (3)").Range(c.Address).Value = _
      Sheets("Ergebnisse (3)").Range(c.Address).Offset(zeilenDiff, spalte).Value
  End If
Next
End Sub
Das nur als weiteren Gedankenanstoß.
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Schleifen Problem"