VBA エラー: スタック領域不足

VBA エラー: スタック領域不足

Excel シートに、ユーザーが再計算できるようにする非常に単純なマクロがあります。

ブック内に他のマクロやコードはなく、このブックのみが開いている

Sub Calculate()
    Calculate
End Sub

これはボタンによってアクティブ化されます。

ただし、押すと 2 つのエラー ボックスが表示されます (画像を参照)。

とは何ですかOut of stack space mean? また、この問題をどのように解決しますか? ここに画像の説明を入力してください

私はこのウェブサイトを見ました:

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/out-of-stack-space-error-28

関数が多すぎる可能性があると表示されます。このマクロは以前は正常に動作していましたが、ほとんど何も実行されていないため、問題が理解できません。

数式タブのオプションを使用してシートを計算することができます。

答え1

定義した関数は再帰的であり、スタックがすべての呼び出しでいっぱいになるまで無条件に自分自身を呼び出します。

サブルーチンの名前を変更する必要があります。例:

Sub Calc()
    Calculate
End Sub

Calc()ボタンにリンクすると、再帰を回避できます。

答え2

Calculate 内で Calculate を呼び出しています。Calculate を呼び出すたびに別の Calculate が呼び出され、さらに Calculate が呼び出されます... そして最終的にスタックがいっぱいになると、そのエラーが発生します。

関連情報