電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
Excel VBAでフォームをつくりました。
下記のように記述し、マクロ起動と同時にフォームだけ見えるようにしました。

Private Sub Workbook_Open()
Application.Visible = False
メニューフォーム.Show
End Sub

しかし、フォームの右上にある×ボタンで終了すると
フォームは閉じますが、Excel自体は起動したままになってしまっています。
フォーム終了と同時にアプリも終了させたい時はどうすればよいか教えてください。
よろしくお願いします。

A 回答 (7件)

こんにちは。



まあ、環境それぞれ、いろいろありますから、タスクマネージャで確認していただくしかありませんが、正直なところ、Userformにいきなり立ち上げるほうも、また、そのまま終了するほうも、ここのカテゴリで、トラブルの報告が出ている限りは、私としては、安易には正答としては出来ませんが、私としては、複数のブックに対しては、お勧めできません。

一応、訂正しておきます。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 If ThisWorkbook.Saved = False Then
  ThisWorkbook.Save
 End If
 DoEvents
 ThisWorkbook.Close False 'False に換えておきます。
 Application.Quit
End Sub


なお、
[XL2002]保存確認メッセージを表示せずにExcelを終了する方法
の中の、以下の方法が、UserFormを使った、私の環境では、場合によって、ハングを起こします。そのために、もう一度、Close メソッドを使っています。

 Sub SaveFileQuitExcel()
   Dim wbook As Workbook
   For Each wbook In Workbooks
     wbook.Save
   Next wbook
   Application.Quit
 End Sub
    • good
    • 0

#1のmshr1962です。

マクロでいいなら下記サポートをご覧ください。
保存確認メッセージを表示せずにExcelを終了する方法
http://support.microsoft.com/kb/408045/ja
    • good
    • 0

>全て上書き保存で終了するという設定は可能でしょうか?


For Each w In Application.Workbooks
w.Save
Next w
というような感じで全てのブックを保存できると思います。
ちなみに、ウチで試してみたときには、修正が生じていない時には、残っている(常駐している)ということはありませんでした。
タスクマネージャーで確認。(冴子さんも去っていったし・)
    • good
    • 0

>全て上書き保存で終了するという設定・・・



開いている全てのブックという意味ですか?

For Each w In Workbooks
If w.Name <> ThisWorkbook.Name Then
w.Close savechanges:=True
End If
Next w
ThisWorkbook.Save
Application.Quit

でどうでしょうか
    • good
    • 0

こんには。



この前、終了時にトラブルが起こるということで、同様の質問が出ていました。
今、試してみました。環境によって違うかもしれませんが、そのまま、Application.Quit では、終われませんでしたね。(見た目は終わっていますが、最初に、Application.Visible =Fale にしたので、常駐していることに気が付かないのです。)

私のほうでは、以下のような方法で可能になりました。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 If ThisWorkbook.Saved = False Then
  ThisWorkbook.Save
 End If
 DoEvents
 ThisWorkbook.Close True
 Application.Quit
End Sub
    • good
    • 0

フォームの QueryClose イベントで


Application.Quit
してやればいいと思います。

この回答への補足

ありがとうございます。思い通りに動作しました。もう1つ教えていただきたいのですが、上記の方法で終了するとファイルの上書きについて確認してきます。そのメッセージが邪魔なので、全て上書き保存で終了するという設定は可能でしょうか?よろしくお願いします。

補足日時:2006/03/16 11:44
    • good
    • 0

>フォームの右上にある×ボタンで終了すると...


当然ですね。
終了するだけならAlt+F4では駄目でしょうか?
    • good
    • 0

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