Goto vermeiden
30.01.2020 09:25:00
Joachim
ich habe folgendes Problem:
Mein Code hat sehr viele ineinander verschachtelte Laufschleifen.
In jeder Laufschleife wird überprüft, ob es sinnvoll die weiteren Laufschleifen zu durchlaufen.
Die Überprüfung selbst ist aufwändig und ich möchte schon die Überprüfung abbrechen, sobald festgestellt wird, dass es nicht sinnvoll ist weiterzurechnen.
Wie gesagt, ich habe es mit "goto" gelöst.
im folgenden nenne ich die Laufschleifenvariable "i1", meine aber immer alle i1, i2, i3, ....
Wenn ich bei der Feststellung, dass eine weitere Überprüfung nicht sinnvoll ist, i1 um 1 hochzähle, ist nicht überprüft ob i1+1 eine sinnvolle Lösung ergibt. ich müsste also an den Anfang der Laufschleife zurückkehren, was ich mit einem Goto machen kann. Genauso gut kann ich aber auch ans Ende springen, und ein goto mit einem anderen goto zu ersetzen löst mein Problem nicht.
Wenn ich mit exit for aus der Laufschleife rausgehe, werden die verbleibenden i1 nicht mehr gerechnet und mir fehlen die Lösungen.
Wenn ich mit "if not sinnvoll then next i1" aus der Überprüfung raus will, dann motzt VBA wegen "next ohne for"
Gibt es eine Möglichkeit das ganze ohne goto hinzubekommen?
Danke für Euere Bemühungen
Joachim
for i1 =1 to x
Berechnung
Beginn der Überprüfung
ggf. Feststellen, dass es nicht sinnvoll ist weiter zu überprüfen, goto ELS1
Ende der Überprüfung
for i2 = 1 to y
Berechnung
Beginn der Überprüfung
Ggf. Feststellen, dass es nicht sinnvoll ist weiter zu überprüfen, goto ELS2
Ende der Überprüfung
for i3 = 1 to z
Berechnung
Beginn der Überprüfung
Ggf. Feststellen, dass es nicht sinnvoll ist weiter zu überprüfen, goto ELS3
Ende der Überprüfung
for i4 = 1 to y
Berechnung
Beginn der Überprüfung
Ggf. Feststellen, dass es nicht sinnvoll ist weiter zu überprüfen, goto ELS4
Ende der Überprüfung
for i5 = 1 to y
Berechnung
Ggf. Feststellen, dass es nicht sinnvoll ist weiter zu überprüfen, goto ELS5
Ende der Überprüfung
sehr viele weitere Laufschleifen
ELS5:
next i5
ELS4:
next i4
ELS3:
next i3
ELS2:
next i2
ELS1:
next i1