プロが教えるわが家の防犯対策術!

エクセル(2000)でマクロを組んだのですが、エクセル97でマクロを実行すると『スタックが不足しています。』というメッセージが出て、強制終了してしまいます。
大きいバージョンでつくったので仕方がないことなのか、それとも何か解決策があるのでしょうか?
よろしくお願いします。

A 回答 (2件)

作成した関数の中で、同じ関数が呼び出されていませんか?



Sub a()
  Call a
End Sub
のようになっていませんか?

自分自身を呼び出す呼び方を再帰呼び出しといいます。

再帰呼び出しは、必要であればしてもかまわないのですが、呼び元の変数の内容をスタックという領域に順次退避して行くため、どんどんCallされていくとスタックが不足してしまいます。

デバッグをしてみて、変な動きをしていないか確認してみてください。
    • good
    • 0
この回答へのお礼

どうも、VBAのバージョンがちがうようで、結論からすれば、どうしようもないようでした。
ただし、回答をいただいた再帰呼び出しについては参考になりました。
ありがとうございました。

お礼日時:2002/06/28 08:23

スタックですから再帰呼び出しの問題だと思います。



しかし、2000で作成したものを97で実行する場合は保証なしですからね。
動いただの動かなかっただの、いろんなケースを聞きますが、基本的な考えとして
「新しいバージョンで作成したものは古いバージョンで運用するな。混在している環境なら何故古いバージョンで作成しない?」
てなことがあります。
    • good
    • 0
この回答へのお礼

ご指摘の通り、「新しいバージョンで作成したものは古いバージョンで運用するな」ですね。
エクセル2000は97のVBAと基本構造?が違うとかで、97では運用できないことがわかりました。

お礼日時:2002/06/28 08:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!