VBA エラー 28「スタック領域が不足しています。」の原因と対処方法

VBAを実行するとVBA エラー 28「スタック領域が不足しています。」を見る機会はありませんか?

コードをみても誤った箇所がわからず途方に暮れる場合もあるかと思います。

そんな中で悩むことは、

・VBA エラー 28「スタック領域が不足しています。」の原因はなに?
・VBA エラー 28「スタック領域が不足しています。」の対処はどうすればよい?

ではないでしょうか?

今回は、
VBA エラー 28「スタック領域が不足しています。」の原因とサクっとできる対処方法について
まとめます!



VBA エラー 28「スタック領域が不足しています。」はどんなエラー?

VBA エラー 28「スタック領域が不足しています。」はプロシージャを呼び出す際に使う記憶領域(スタック領域)が満杯になった状態に陥ったことを表すエラーとなります。



VBA エラー 28の原因①「再帰呼び出しが多すぎる」

スタック領域とは呼び出したプロシージャの順序を記憶する場所で、VBA エラー 28「スタック領域が不足しています。」は

「スタック領域がいっぱいでもうプロシージャの順序を覚えられないよ!」

と警告していることとなります。

プロシージャをいっぱい呼び出すケースといえば、プロシージャを再帰的に呼び出すケースですね。

再帰呼び出し件数は条件に応じて変動するかと思いますが、

その条件を把握しておかないと、プロシージャ順序履歴が増大してしまう場合がありますので注意が必要です。

以下はサンプルコードです。

Sub エラーテスト1()

    Dim num As Integer

    num = num + 1
    Call エラーテスト1

End Sub

はい、エラー 28がでましたね。

無限ループと判定され、1件目の処理の段階でVBA エラー 28が発生しているようです。



VBA エラー 28の原因①「再帰呼び出しが多すぎる」の対処方法は再帰呼び出しをやめる

エラー28を発生させないようにするには、再帰呼び出しは行わないようにしましょう。

再帰呼び出しを使う場合は、呼び出し件数の最大値を把握し、限界値テストをしっかりしましょう。

特に無限ループとならないよう注意したいところです。



さいごに

今回は、
VBA エラー 28「スタック領域が不足しています。」の原因とサクっとできる対処方法について
まとめました。

VBAのエラーはパターンを知っておくと発生した時に慌てず対応することができますので、

しっかりと対処方法を把握するようにしておきたいですね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です