重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

次の事を行うと再現します。

VBEを開き、ユーザーフォームのコードを表示させます(ユーザーフォームのどこかをダブルクリックすれば表示されます)

その状態で、ツールバーの△からユーザーフォームを実行し、フォームを閉じずにVBEのコードの画面に映ります。

全角(IMEをONの状態)で何か書き込もうとします。

ツールバーの□をクリックし、ユーザーフォームを終了させようとします。

エクセル(2007)が強制終了します。

逆に全角で打つところを半角でうつと
ポンッ、ポンッ、という音がちゃんとなります。
(ユーザーフォームを実行中だからコードになにもかけないよっというエラー音です)


この強制終了は、いったいなぜ起こるのでしょうか?

OS:XP sp3
メモリ:2G
CPU:core2duo E8400
グラボ:GeForce GT 220
エクセル:2007 (12.0.6557.5000)SP2 MSO (12.06554.5001)

A 回答 (3件)

『なぜ』起こるのかは到底わかりませんが、


その現象は確かに発生するようです。
winXPの2000,2003,2007,2010のバージョンで発生しました。
97は発生しませんでしたが。

MSsupportにも載ってないようなのであまり知られてないバグなのかもしれませんね。
IMEが関係してるとなると日本語環境のみの発生なのでバグ報告の頻度も少ないのかも。

対策としては
1.UserFormはデフォルトプロパティとしてモードレスで作成するようにし、
通常運用でモーダル利用する時には呼び出し側で引数modalを必ず書く。
(モードレスの場合は発生しないみたいなので)

2.編集時に全角入力しようとしてフォームを開いている事に気づいたら取り敢えずenter押すくせをつける...

..とか対策にならないような消極的な自己防衛策しか思いつけません..
『なぜ』、を追求したい場合は、これはもうmicrosoftに問い合わせるしかないと思われます。

#ただ、強制終了に対する備えが必要なのは、何もこの件に限った事ではないでしょうから、
#バックアップや自動保存などの対策は必須でしょうね。
#私などが言うまでもなく、充分に備えられてるとは思いますが。
    • good
    • 0
この回答へのお礼

対策まで教えてくださってありがとうございます。
今回は、どうなったら起こるか解明できたので、次回からは気を付けるようにします。

たまに、正体不明の強制終了が起こることがあるので、困っていますがw

お礼日時:2011/08/04 18:04

再現方法はわかりました。



質問者様が異常だと言っているのではなく
プログラムを書く上でそのような操作をすることが異常だと言うことです。

VBAは誰がどんな操作をしても、また、データ型がいいかげんでも自動で変換してくれたり、変数宣言をしなくても動かす方法があったりと至れりつくセリの言語になっていて滅多なことでは大きな問題が起きないくらいになっています。今回、そうではない事柄を見つけたので気になるのでしょうが、プログラム実行中にプログラムを書きかえようという操作をするなんてことは、うっかりで済むようなことではないと考えたほうがいいというのが私の考えです。たとえばハードウェアにかかわるようなものを書いていたりすれば、最悪はPCや外部のハードウェアの人為的なミスによる破壊にもつながりかねません。

なお、2010版では、そのような重大な問題が起きても、自動回復機能が働いてくれるようになっています。
    • good
    • 0
この回答へのお礼

異常という言葉に過敏に反応してしまいました。申し訳ありません。

やはり、普通はそんなミスはしないんですね。
今後気を付けるようにします。

お礼日時:2011/08/04 18:05

>>この強制終了は、いったいなぜ起こるのでしょうか?<<


XP_sp3,Excel2007でやってみました。なぜかはわかりませんが、当方では入力そのものができません。というわけで強制終了もおこりません。

プログラム実行中にコード入力しようということ自体が異常な考えだと思うのですが・・・・。

この回答への補足

いや、私も入力はできません。ただ、全角で入力しようとすると何も音がならず、
その直後に■で終了させようとすると強制終了するという話です。

>>プログラム実行中にコード入力しようということ自体が異常な考えだと思うのですが・・・・。

デバッグしようとしているときに、ユーザーフォームを開いていることを忘れて、コードを書き直そうとすることありませんか?
そういう時に強制バグが起こると困るので、聞いているんですが・・・
私は異常ですか・・・

ちなみに別のパソコンでエクセル2000でも試してみました。
きちんと再現しました。

補足日時:2011/08/01 15:11
    • good
    • 0

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