Erstellen rekursiver Prozeduren

Prozeduren verfügen über einen begrenzten Speicherplatz für Variablen. Immer wenn eine Prozedur sich selbst aufruft, wird ein Teil dieses Speichers verwendet. Eine Prozedur, die sich selbst aufruft, wird als rekursive Prozedur bezeichnet. Ruft eine rekursive Prozedur sich ständig immer wieder selbst auf, wird schließlich ein Fehler verursacht. Beispiel:

Function RunOut(Maximum) 
 RunOut = RunOut(Maximum) 
End Function

Dieser Fehler ist möglicherweise nicht so offensichtlich, wenn zwei Prozeduren sich gegenseitig immer wieder aufrufen oder wenn eine Bedingung, durch die die Rekursion begrenzt wird, nie eintritt. Es gibt sinnvolle Anwendungsgebiete für Rekursionen. In der folgenden Prozedur wird beispielsweise eine rekursive Funktion zum Berechnen von Faktorien verwendet.

Function Factorial (N) 
 If N <= 1 Then ' Reached end of recursive calls. 
 Factorial = 1 ' (N = 0) so climb back out of calls. 
 Else ' Call Factorial again if N > 0. 
 Factorial = Factorial(N - 1) * N 
 End If 
End Function

Sie sollten Ihre rekursive Prozedur testen, um sicherzustellen, dass sie sich nicht selbst aufruft, bis kein Speicher mehr vorhanden ist. Wenn ein Fehler auftritt, vergewissern Sie sich, dass sich Ihre Prozedur nicht grenzenlos selbst aufruft. Versuchen Sie anschließend folgendermaßen, sparsam mit dem Speicher umzugehen:

  • Vermeiden unnötiger Variablen.
  • Verwenden von anderen Datentypen als Variant.
  • Erneutes Auswerten der Logik der Prozedur. Häufig können Sie verschachtelte Schleifen anstelle von Rekursionen verwenden.

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.