程序 的 變數空間有限。 每次程序呼叫自己時,就會佔用更多該空間。 一個自稱為 的程序是一個遞迴程序。 一個持續呼叫自身的遞迴程序最終會造成錯誤。 例如:
Function RunOut(Maximum)
RunOut = RunOut(Maximum)
End Function
當兩個程序無限次呼叫彼此,或某些限制遞迴的條件從未被滿足時,這個錯誤可能不那麼明顯。 遞迴確實有它的用途。 例如,以下程序使用遞迴函數來計算階乘。
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
你應該測試遞迴程序,確保它不會叫自己太多次,導致記憶體用盡。 如果收到錯誤,請確認你的程序沒有無限期地自我呼叫。 之後,嘗試透過以下方式節省記憶體:
- 消除不必要的變數。
- 使用除了 Variant 以外的資料型別。
- 重新評估程序的邏輯。 你通常可以用巢狀迴圈來取代遞迴。
另請參閱
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。