重要なお知らせ

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

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

ExcelVBAのユーザーフォームについて教えて下さい。

マルチページで作成し、アイコンをクリックしてファイルを開くと、マルチページのみが表示される仕様にしました。

<ThisWorkbook>
Private Sub Workbook_Open()

Application.Visible = False
UserForm.MultiPage1.Value = 0

UserForm.Show

End Sub

そして、マルチページ内にボタンを配置して、そのボタンをクリックすると、マルチページが終了するとともに、マルチページが埋め込まれているExcelファイルを(他のExcelファイルが動作中はそれらは何もしないでそのまま)閉じたいのです。

<UserForm>
Private Sub CommandButton_Click ()

Dim msg As String, title As String

msg = "プログラムを終了します。よろしいですか?"
title = "終了確認"

Dim res As Integer

res = MsgBox(msg, vbYesNo + vbInformation, title)
If res = vbYes Then Unload Me

End Sub

と書いてみました。

マルチページの画面はExcelの作業画面なしに開きます。ボタンをクリックするとマルチページが終了します。

ですが、「マルチページが閉じてExcelの作業画面も表示されず、一見終了したように見えるが、タスクマネージャーのプロセスではEXCEL.EXEが動作している」ことがあったり(他にExcelファイルを開いていないときも同様です)、「マルチページ終了後にExcelの何もない作業画面が表示」されます。そのファイルを閉じてもよいのですが、せっかくマルチページで、単独のアプリのようにしているので、マルチページを閉じて、Excelを閉じて…という、二度手間的なことはしたくないと思っています。

マルチページに配置したボタンをクリックしただけで、マルチページを終了させ、マルチページが埋め込まれているExcelのみも正常に終了させることはできますでしょうか?

ご教授頂きたくお願い致します。

ちなみに「×」ボタンでの終了はNGとしています。

A 回答 (1件)

(1)


>マルチページが埋め込まれているExcelファイル

を閉じるためには、下記の記述が必要です。
ThisWorkbook.Close SaveChanges:=False (あるいはTrue)

(2)
EXCEL.EXEを終了させるためには、下記の記述が必要です。
Application.Quit


他に開いているExcelファイルがあれば、(1)を実行し、
ThisWorkBookのみであれば、(2)を実行するようにすれば
よろしいかと思います。


ちなみに、ThisWorkBookを閉じる前に
Application.Visible = True
を設定した方がよろしいかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました!助かりました!

お礼日時:2014/01/14 11:25

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