- ベストアンサー
ユーザーフォームでエクセル2007が強制終了する
- VBEを開いてユーザーフォームを実行すると、エクセル2007が強制終了します。
- 全角で文字を入力しようとすると、ユーザーフォームを終了しようとするときにエクセルが強制終了します。
- この問題は、OSがXP sp3でメモリが2G、CPUがcore2duo E8400、グラボがGeForce GT 220の環境でエクセル2007を使用している場合に発生します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
『なぜ』起こるのかは到底わかりませんが、 その現象は確かに発生するようです。 winXPの2000,2003,2007,2010のバージョンで発生しました。 97は発生しませんでしたが。 MSsupportにも載ってないようなのであまり知られてないバグなのかもしれませんね。 IMEが関係してるとなると日本語環境のみの発生なのでバグ報告の頻度も少ないのかも。 対策としては 1.UserFormはデフォルトプロパティとしてモードレスで作成するようにし、 通常運用でモーダル利用する時には呼び出し側で引数modalを必ず書く。 (モードレスの場合は発生しないみたいなので) 2.編集時に全角入力しようとしてフォームを開いている事に気づいたら取り敢えずenter押すくせをつける... ..とか対策にならないような消極的な自己防衛策しか思いつけません.. 『なぜ』、を追求したい場合は、これはもうmicrosoftに問い合わせるしかないと思われます。 #ただ、強制終了に対する備えが必要なのは、何もこの件に限った事ではないでしょうから、 #バックアップや自動保存などの対策は必須でしょうね。 #私などが言うまでもなく、充分に備えられてるとは思いますが。
その他の回答 (2)
- DreamyCat
- ベストアンサー率56% (295/524)
再現方法はわかりました。 質問者様が異常だと言っているのではなく プログラムを書く上でそのような操作をすることが異常だと言うことです。 VBAは誰がどんな操作をしても、また、データ型がいいかげんでも自動で変換してくれたり、変数宣言をしなくても動かす方法があったりと至れりつくセリの言語になっていて滅多なことでは大きな問題が起きないくらいになっています。今回、そうではない事柄を見つけたので気になるのでしょうが、プログラム実行中にプログラムを書きかえようという操作をするなんてことは、うっかりで済むようなことではないと考えたほうがいいというのが私の考えです。たとえばハードウェアにかかわるようなものを書いていたりすれば、最悪はPCや外部のハードウェアの人為的なミスによる破壊にもつながりかねません。 なお、2010版では、そのような重大な問題が起きても、自動回復機能が働いてくれるようになっています。
お礼
異常という言葉に過敏に反応してしまいました。申し訳ありません。 やはり、普通はそんなミスはしないんですね。 今後気を付けるようにします。
- DreamyCat
- ベストアンサー率56% (295/524)
>>この強制終了は、いったいなぜ起こるのでしょうか?<< XP_sp3,Excel2007でやってみました。なぜかはわかりませんが、当方では入力そのものができません。というわけで強制終了もおこりません。 プログラム実行中にコード入力しようということ自体が異常な考えだと思うのですが・・・・。
補足
いや、私も入力はできません。ただ、全角で入力しようとすると何も音がならず、 その直後に■で終了させようとすると強制終了するという話です。 >>プログラム実行中にコード入力しようということ自体が異常な考えだと思うのですが・・・・。 デバッグしようとしているときに、ユーザーフォームを開いていることを忘れて、コードを書き直そうとすることありませんか? そういう時に強制バグが起こると困るので、聞いているんですが・・・ 私は異常ですか・・・ ちなみに別のパソコンでエクセル2000でも試してみました。 きちんと再現しました。
お礼
対策まで教えてくださってありがとうございます。 今回は、どうなったら起こるか解明できたので、次回からは気を付けるようにします。 たまに、正体不明の強制終了が起こることがあるので、困っていますがw