- ベストアンサー
マクロ実行時の「スタックの不足」について
エクセル(2000)でマクロを組んだのですが、エクセル97でマクロを実行すると『スタックが不足しています。』というメッセージが出て、強制終了してしまいます。 大きいバージョンでつくったので仕方がないことなのか、それとも何か解決策があるのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
作成した関数の中で、同じ関数が呼び出されていませんか? Sub a() Call a End Sub のようになっていませんか? 自分自身を呼び出す呼び方を再帰呼び出しといいます。 再帰呼び出しは、必要であればしてもかまわないのですが、呼び元の変数の内容をスタックという領域に順次退避して行くため、どんどんCallされていくとスタックが不足してしまいます。 デバッグをしてみて、変な動きをしていないか確認してみてください。
その他の回答 (1)
noname#102878
回答No.2
スタックですから再帰呼び出しの問題だと思います。 しかし、2000で作成したものを97で実行する場合は保証なしですからね。 動いただの動かなかっただの、いろんなケースを聞きますが、基本的な考えとして 「新しいバージョンで作成したものは古いバージョンで運用するな。混在している環境なら何故古いバージョンで作成しない?」 てなことがあります。
質問者
お礼
ご指摘の通り、「新しいバージョンで作成したものは古いバージョンで運用するな」ですね。 エクセル2000は97のVBAと基本構造?が違うとかで、97では運用できないことがわかりました。
お礼
どうも、VBAのバージョンがちがうようで、結論からすれば、どうしようもないようでした。 ただし、回答をいただいた再帰呼び出しについては参考になりました。 ありがとうございました。