Sub上のコードは、非常に分かりやすい例です。あるプロシージャから別のプロシージャを呼び出す(コールする)と、VBAはスタック領域という記憶場所に、"どのプロシージャがどのプロシージャを呼び出したか"を記録しておきます。しないと、呼び出されたプロシージャが終了したとき、最初のプロシージャに戻れませんからね。その記憶場所であるスタック領域には限度があります。̄|○」という状態が、このエラーです。上のコードみたく、お互いを無限に呼び合うようなミスをすると、VBAのスタック領域はすぐ一杯になります。このように、このエラーは他のプロシージャを呼び出すときにも起こりがちですが、それよりも自分自身を呼び出す再帰プロシージャで注意が必要です。次のコードは、サブフォルダの一覧をワークシートに出力するマクロです。Sample4は再帰プロシージャになっています。Subこうした再帰プロシージャでは、スタック領域に記憶される"呼び出し履歴"が、どうしても増大します。上のコードでは、あまりに深いフォルダ階層を取得しようとすると「スタック領域が不足しています」エラーが発生するかもしれません。