Beenden einer For … Next Loop Early (Microsoft Excel)
Wenn Sie For … Next-Schleifen in Ihrer Makroprogrammierung verwenden (wer nicht?), Sollten Sie wissen, dass sie viel Zeit in Anspruch nehmen können. Sie können dies minimieren, indem Sie nur überprüfen, was Sie benötigen. Betrachten Sie beispielsweise den folgenden Code, der ein Array überprüft, um festzustellen, ob ein Wert vorhanden ist. Wenn dies nicht der Fall ist, wird der Wert am Ende des Arrays hinzugefügt. Wenn dies der Fall ist, wird der Wert nicht addiert.
AddIt = False For J = 1 to NumEntries If NumValues(J) = ToAdd Then AddIt = True Next J If AddIt Then NumEntries = NumEntries + 1 NumValues(NumEntries) = ToAdd End If
Dies funktioniert hervorragend, aber wenn das Array groß wird, können Sie die For … Next-Schleife einige Male durchlaufen. Betrachten Sie nun den folgenden Code, der dieselbe Aufgabe ausführt, jedoch frühzeitig aus der For … Next-Schleife ausgegeben wird, wenn eine Übereinstimmung festgestellt wird.
AddIt = False For J = 1 to NumEntries If NumValues(J) = ToAdd Then AddIt = True Exit For End If Next J If AddIt Then NumEntries = NumEntries + 1 NumValues(NumEntries) = ToAdd End If
Wenn nun früh in der Schleife eine Übereinstimmung gefunden wird, werden alle restlichen Iterationen übersprungen, da die Anweisung Exit For angetroffen wird und die Schleife im Grunde sofort beendet wird. Das Ergebnis ist ein schneller laufendes Makro.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (2260) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: