【VBA】スタック領域が不足しています

【VBA】スタック領域が不足しています

VBAでの開発のさなか、こんなエラーが発生しました。

スタック領域が不足しています

そんなにVBAに詳しくないため、普段見慣れないエラーです。

調べてみると、すぐに答えが分かりました。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/out-of-stack-space-error-28

プロシージャが深すぎるとのこと。

再帰処理なんかで起きることがあるそうです。

今回は再帰処理ではなく、イベント時の呼び出しが原因でした。

無限ループってやつですね。

具体的には

1. フォーム内のチェックボックスが変更された際に別のオブジェクトに対して値の変更を行う。

2. 値の変更が行われたオブジェクトの中でチェックボックスの値を変更する動作が走る。

3. 1に戻る

のような感じでした。

どちらもChangeイベントで処理を行っていましたが、BeforeUpdate・AfterUpdateに処理を分けることで解消することが出来ました。

No comments.

コメントを残す

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