Schleifen mit GoTo verlassen
05.06.2022 23:43:33
Dieter
ich habe ein Projekt mit 20 Blöcken, in denen sich jeweils For ... Next Schleifen befinden und in den Schleifen steht jeweils ein If ... End If Block. Der End ... If Block wird mit einer GoTo Anweisung verlassen, wenn eine bestimmte Bedingung erfüllt ist. Das GoTo führt mit aktualisierten Variablen an den Anfang des Makros zurück, um die 20 Blöcke wiederholt zu durchlaufen. So der Plan ...
Bevor es die im Zusammenhang mit GoTo die grundsätzlich gerechtfertigte Aufregung gibt, hier eine Erklärung. Dieses Konstrukt ist nicht "schön", erspart aber die Verschachtelung von 20 Schleifen mit einer unzumutbaren Laufzeit.
Das Makro läuft ohne Fehlermeldungen durch, aber das Resultat unterscheidet sich erheblich von dem einer manuellen Simulation, und in das Arbeitsblatt werden auch nicht die erwarteten Werte eingetragen.
Meine Frage: Können Variable ihren Wert verlieren oder ändern, wenn For ... Next Schleifen oder If ... End If Blöcke so unkonventionell mit GoTo verlassen werden? Stichworte für eigene Lösungsversuche reichen erst einmal aus.
Zusatzinfos: Alle Variablen sind einzeln typgerecht mit Dim deklariert. Das Makro beginnt mit der Abschaltung "zeitfressender" Funktionen wie ScreenUpdating, Cursor, DisplayAlerts, EnableEvents, DisplayStatusBar, und die Berechnung wir auf xlCalculationManual gesetzt. An den Stellen, wo aktuelle Tabellenwerte gebraucht werden, erfolgt eine zwangsweise Neuberechnung mit ApplicationCalculate. Versuche mit Do ... While o.ä. waren bisher nicht erfolgreich.
Bin gespannt, schon mal vielen Dank