スタックは、実行中のプログラムの要求に合わせて動的に増減するメモリの作業領域です。 その制限を超えました。
このエラーを解決するには
プロシージャの入れ子が深すぎないことを確認します。
再帰プロシージャが正しく終了していることを確認します。
ローカル変数に使用可能なよりも多くのローカル変数領域が必要な場合は、モジュール レベルでいくつかの変数を宣言してみてください。
Property、Sub、またはFunctionキーワードの前にStaticを付けることで、プロシージャ内のすべての変数を静的に宣言することもできます。 または、Staticステートメントを使用して、プロシージャ内で個々の静的変数を宣言することもできます。固定長文字列では可変長文字列よりも多くのスタック領域が使用されるため、固定長文字列の一部を可変長文字列として再定義します。 また、スタック領域が不要なモジュール レベルで文字列を定義することもできます。
Callsダイアログ ボックスを使用して、スタックでアクティブなプロシージャを表示して、入れ子になったDoEvents関数呼び出しの数を確認します。スタックに既に存在するイベント プロシージャを呼び出すイベントをトリガーして、"イベント カスケード" が発生していないことを確認します。 イベント カスケードは、終了していない再帰プロシージャ呼び出しに似ていますが、呼び出しはコード内の明示的な呼び出しではなく Visual Basic によって行われるので、あまり明白ではありません。 [
Calls] ダイアログ ボックスを使用して、スタックでアクティブなプロシージャを表示します。
こちらも参照ください
.NET