
次の事を行うと再現します。
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)
No.2ベストアンサー
- 回答日時:
『なぜ』起こるのかは到底わかりませんが、
その現象は確かに発生するようです。
winXPの2000,2003,2007,2010のバージョンで発生しました。
97は発生しませんでしたが。
MSsupportにも載ってないようなのであまり知られてないバグなのかもしれませんね。
IMEが関係してるとなると日本語環境のみの発生なのでバグ報告の頻度も少ないのかも。
対策としては
1.UserFormはデフォルトプロパティとしてモードレスで作成するようにし、
通常運用でモーダル利用する時には呼び出し側で引数modalを必ず書く。
(モードレスの場合は発生しないみたいなので)
2.編集時に全角入力しようとしてフォームを開いている事に気づいたら取り敢えずenter押すくせをつける...
..とか対策にならないような消極的な自己防衛策しか思いつけません..
『なぜ』、を追求したい場合は、これはもうmicrosoftに問い合わせるしかないと思われます。
#ただ、強制終了に対する備えが必要なのは、何もこの件に限った事ではないでしょうから、
#バックアップや自動保存などの対策は必須でしょうね。
#私などが言うまでもなく、充分に備えられてるとは思いますが。
対策まで教えてくださってありがとうございます。
今回は、どうなったら起こるか解明できたので、次回からは気を付けるようにします。
たまに、正体不明の強制終了が起こることがあるので、困っていますがw
No.3
- 回答日時:
再現方法はわかりました。
質問者様が異常だと言っているのではなく
プログラムを書く上でそのような操作をすることが異常だと言うことです。
VBAは誰がどんな操作をしても、また、データ型がいいかげんでも自動で変換してくれたり、変数宣言をしなくても動かす方法があったりと至れりつくセリの言語になっていて滅多なことでは大きな問題が起きないくらいになっています。今回、そうではない事柄を見つけたので気になるのでしょうが、プログラム実行中にプログラムを書きかえようという操作をするなんてことは、うっかりで済むようなことではないと考えたほうがいいというのが私の考えです。たとえばハードウェアにかかわるようなものを書いていたりすれば、最悪はPCや外部のハードウェアの人為的なミスによる破壊にもつながりかねません。
なお、2010版では、そのような重大な問題が起きても、自動回復機能が働いてくれるようになっています。
異常という言葉に過敏に反応してしまいました。申し訳ありません。
やはり、普通はそんなミスはしないんですね。
今後気を付けるようにします。
No.1
- 回答日時:
>>この強制終了は、いったいなぜ起こるのでしょうか?<<
XP_sp3,Excel2007でやってみました。なぜかはわかりませんが、当方では入力そのものができません。というわけで強制終了もおこりません。
プログラム実行中にコード入力しようということ自体が異常な考えだと思うのですが・・・・。
この回答への補足
いや、私も入力はできません。ただ、全角で入力しようとすると何も音がならず、
その直後に■で終了させようとすると強制終了するという話です。
>>プログラム実行中にコード入力しようということ自体が異常な考えだと思うのですが・・・・。
デバッグしようとしているときに、ユーザーフォームを開いていることを忘れて、コードを書き直そうとすることありませんか?
そういう時に強制バグが起こると困るので、聞いているんですが・・・
私は異常ですか・・・
ちなみに別のパソコンでエクセル2000でも試してみました。
きちんと再現しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- オンラインゲーム PCのオンラインゲームが急に重くなった 4 2022/10/11 05:15
- Safari(サファリ) 大学の出欠確認でQRコードを読み取り、Googleフォームに送ってます。自分の携帯のQRコード読み取 1 2022/11/25 14:54
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Form_Load と Form_Activate の...
-
クリックイベントなのに、2回ク...
-
VBAでユーザーフォームを再表示...
-
ユーザーフォーム上に現在日時...
-
テキストボックス入力データの...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームのテキストボ...
-
MDIフォームでのモーダル
-
アクセス 別フォームの関数の...
-
[VB6.0]フォーム上に配置したコ...
-
VBAのテキストフォームの折り返...
-
EXCEL VBA ユーザーフォームの...
-
テキストボックスの番号の取得
-
Excelにて、ユーザーフォームで...
-
コントロールの存在確認
-
フォームを同期的に
-
ユーザーフォームのコピー?
-
起動時の表示したいフォームの選択
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Form_Load と Form_Activate の...
-
VBAでユーザーフォームを再表示...
-
Microsoft Formsの「個人情報や...
-
クリックイベントなのに、2回ク...
-
ユーザーフォームのテキストボ...
-
ユーザーフォーム上に現在日時...
-
ACCESSのフォーム、開くんです...
-
エクセルのチェックボックスの...
-
エクセルVBAのフォームを最...
-
VB.NETでフォームロード中のエ...
-
EXCEL VBA ユーザーフォームの...
-
VBA(エクセル)のユーザー...
-
【Excel VBA】ユーザフォームを...
-
Hideについて(.NET)
-
(Excel+VBA)ユーザーフォームの...
-
モーダルフォームとモードレス...
-
VBA コンボボックスとテキスト...
-
アクセス2013 フォームが...
おすすめ情報