• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(Excel+VBA)ユーザーフォームのみ表示で完結させたい。)

(Excel+VBA)ユーザーフォームのみ表示で完結させたい

このQ&Aのポイント
  • ExcelのVBAを使った複雑なアプリケーションを開発中です。ユーザーフォームだけで完結するもので、VBで作成されたもののように見えます。
  • 開いたExcelファイルではユーザーフォームのみ表示され、一連の作業を行います。処理中には他のSheetを使用しますが、表示させません。
  • 作業終了時には他のWorkbookが開いているかを判断し、現在のWorkbookのみを閉じるか、アプリケーションを終了します。保存は必要ありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

これでよい? >3) 作業終了時・・・これがわからない。 '終了ボタンはフォームを閉じるだけでよい Private Sub CommandButton1_Click() Unload Me End Sub 'フォームが閉じる時のイベントで分岐処理 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If Workbooks.Count > 1 Then '他にBookが存在した場合 Application.DisplayAlerts = False ThisWorkbook.Close Else '他にBookが無い場合 Application.DisplayAlerts = False Application.Quit End If End Sub 以上、参考まで

ORUKA1951
質問者

お礼

随分と遅くなりました。 過去の記録を整理していて気が付きました。 このままでは、私の方の作りが少し違っていてそのまま適用はでき万出たが、重要なヒントをいただきました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 アドバイスといえるか分かりませんが、VBAではお勧めしません。あくまでも、実験的な範囲を免れ得ないと思うのです。私個人は、VBから作ってしまうので、そのようなことは考えませんが、それは、起動時から、Application やWorkbook が、Visible = False として置けばよいのですが、Applicationの終了時にハングの危険が必ず伴います。 理由は、おそらく、Applicationの終了時まで、UserForm が残っているせいなのだと思うのです。それで、UserFormはWorkbook自体とは間接的なつながりでしかなく、おまけにコントロール・オブジェクトがOLEとして存在しているから、途中で途切れてしまうからだと思うのです。たぶん、97時代には問題なかったようなので、富士通のテキストにも載っていたようですが、Excel 2000移行は変わりましたから、問題が発生するのだと思うのです。よほど、この辺りが明るくないと開発は難しいのです。 どうしてもというなら、それは、あえて挑戦してみたらと思うのですが、ここのサイトでも、同様の方法で不明のハングの質問がありましたが、そういうUserForm のみという方法が失敗しているのを知ると、とても、実務上では使えないような気がしています。見かけを優先させてリスクを上げるということには、あまり得策ではないような気がします。

関連するQ&A