VB6.0(SP5)を使用しています。OSはXp Proです。
自作アプリのEXEでの動作で困っています。ENDステートメントが正常に機能しません。
MDIフォームで、メインフォームのLoad中、何らかのエラー(DLLの初期化失敗など)が発生した場合に、ENDステートメントでアプリケーションを終了させています。
VBでデバッグさせている状態だと問題無く終了します。
しかし、コンパイル後のEXEで動作させると必ずメインMDIフォームを表示(起動?)します。
この時に起動されるメインMDIフォームは、各種メニュー等は起動不可で、右上×印の終了ボタンのみ機能します。
ToolBarコントロールを使用しているか否かで、症状が変わります。
(1)MDIフォームにToolBarコントロールを組み込んだ状態
上記、MDIフォームが表示される現象が発生します。
(2)MDIフォームにToolBarコントロールを組み込んでいない状態
正常に終了します。
ToolBarコントロールのプロパティを何か変更する必要があるのでしょうか?
自作アプリだけの問題かとも思い、下記のような単純サンプルを作成して確認しましたが、EXEで動作させるとやはり同様の症状が発生します。
-------------------------------------------------
Private Sub MDIForm_Load()
End '何もせずに終了する筈。
End Sub
-------------------------------------------------
ENDステートメントの直前で、何か実行する必要があるのかと思い、下記のようにも試してみました。
1)ToolBarを非表示にする。
Toolbar1.Visible = False 又は Set ToolBar1 = Nothing
END '何もせずに終了する筈。
結果:ツールバーが非表示になるだけで、メインMDIフォームは表示されます。
2)メインMDIフォームを無効にする。
MDIForm1.Enabled = False
END '何もせずに終了する筈。
結果:我ながらマヌケですが、メインMDIフォームが表示され、尚かつ×印すらクリック不可でした。
3)メインMDIフォームを非表示にする。
MDIForm1.Visible = False
END '何もせずに終了する筈。
結果:MDIフォームが非表示となり、一見、よさそうですが、タスクマネージャで確認すると、該当アプリのタスクは終了はしていませんでした。
その他、ENDの代わりに、STOPを使用してみました。
この場合は、STOP実行時に「STOPステートメントで中断しました」とのメッセージが表示され、OKボタンで、やはりメインMDIフォームが表示されます。
どなたか、MDIフォーム+ToolBarコントロールを組み込んだ状態で、正常にENDステートメントを動作させる方法を教えてください。(EXEでの動作です。)
また、VBでデバッグさせている状態だと問題無く終了するのは何故なのでしょうか?。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Initializeイベントで
Me.TooBar1.Enabled = False
を実行しておきます
こうしておけば MDIフォームのLoadイベントでEndステートメントも実行されるようです
ツールバーの初期化が関係しているのかもしれませんね
お礼が遅くなってしまい、申し訳ないです。
redfox63さん ありがとうございました。
Initializeイベントで
Me.TooBar1.Enabled = False とし、フォームの初期化時にツールバーを無効化することで解決できました。
ただ、このままですとツールバーが無効のままですので、
さらに、Activateイベントで下記のように有効に戻すようにしました。
Private Sub MDIForm_Activate()
Toolbar1.Enabled = True
End Sub
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAのフォームを最...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
MSGBOXのフォント大きさ変更
-
ユーザーフォームを表示中にシ...
-
ユーザーフォーム上に現在日時...
-
ユーザーフォームのラベルに時...
-
Form_Load と Form_Activate の...
-
クリックイベントなのに、2回ク...
-
フォームウィンドウを最前面に...
-
VBAでユーザーフォームを再表示...
-
ACCESSでストップウォッチの作成
-
Microsoft Formsの「個人情報や...
-
Hideについて(.NET)
-
【VBAユーザーフォームで閉じる...
-
モーダルフォームとモードレス...
-
keypressイベントでEnterキー(a...
-
VisibleとOpenFormは意味が同じ?
-
VBのフォームをスクロールさせ...
-
フォームの位置を取得したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
クリックイベントなのに、2回ク...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォーム上に現在日時...
-
Form_Load と Form_Activate の...
-
モーダルフォームとモードレス...
-
Excelにて、ユーザーフォームで...
-
VBAでユーザーフォームを再表示...
-
【VBAユーザーフォームで閉じる...
-
MSGBOXのフォント大きさ変更
-
VBA(エクセル)のユーザー...
-
Hideについて(.NET)
-
エクセルVBAのフォームを最...
-
コントロールの存在確認
-
ACCESSのフォーム、開くんです...
-
'ユーザーフォーム右上隅の[×...
-
フォームウィンドウを最前面に...
-
ユーザーフォームのラベルに時...
おすすめ情報