【ExcelVBA】スタック領域が不足しています。実行時エラー28

ExcelVBA, ExcelVBAのエラー



よくある原因は、
再帰処理の中でローカル変数とメソッドの情報がスタック領域に格納しきれなくなり発生する。そんなところです。
下記は、このエラーが発生する再帰処理のサンプルコードです。
Sub Sample1()

  Call Sample2

End Sub

Sub Sample2()

  Call Sample1

End Sub

シンプルなふたつのプロシージャ間で再帰処理した場合の、エラーで停止するまでの再帰回数をカウントしてみました。
結果は 3397 回でした。
この数値は、プロシージャの内容次第で大きく変動します。
下記は、エラーが発生するまでの再帰回数をカウントするサンプルコードです。
Dim i As Long

Sub Sample1()

  i = i + 1
  Debug.Print i
  
  Call Sample2

End Sub

Sub Sample2()

  Call Sample1

End Sub