
ブックをCloseまたはQuitで閉じると他のユーザーフォームが消えてしまう。
お世話になります。
Excel2000、2013でツール開発をしているのですが、タイトルのようにユーザーフォームが消えてしまって困っています。
助言頂ければと思います。
Book1
UserForm1…Book2を開くボタンを実装してあります。単純にWorkbooks.openです。
Book2
UserForm2…Book2のOpenにてShowされるユーザーフォームです。
Book1のUserForm1からBook2のUserForm2をShowさせた後、
UserForm2の閉じるボタンにて「Application.quit」と「ThisWorkbook.Close」を実行させて、
Book2を閉じてまたUserForm1に戻る処理を行いたいのです。
ところが、quitとcloseを実行するとBook2は問題なく閉じるのですが、
UserForm1までもが消えてしまいます。
UserForm1を消さずに戻る方法は無いのでしょうか??

No.3ベストアンサー
- 回答日時:
No2です。
こちらで確認した方法です。
Book1のUseform1のコード
--------------------------------
Private Sub CommandButton1_Click()
Workbooks.Open "d:\goo\excel\book107b.xlsm"
Application.Run "book107b.xlsm!Macro1"
Workbooks("book107b.xlsm").Close
End Sub
(book2相当)book107b.xlsmの標準モジュール
----------------------------------
Public Sub Macro1()
UserForm2.Show
End Sub
(book2相当)book107b.xlsmのUserForm2のコード
-------------------------------------
Private Sub CommandButton1_Click()
Unload Me
End Sub
tatsu99さん
分かりやすくありがとうございますっ!
こちらでも同じようにやってみましたが、一番すんなり実装できそうな感じになりましたので、もう少し自分なりに熟考したいと思います。
しかし、なぜユーザーフォームが消えるのか・・・。
謎ですよね(^^;
そもそもExcel自体、複数ブック連携を前提になっていないのでしょうか。
ともかく、大変参考になりました。
ありがとうございましたっ!

No.2
- 回答日時:
Userform2では
unload me
のみ行い、
userform1でopenでshowさせた後、(Userform2から戻ったあとに)
userform1でbook2をcloseさせてはいかがでしょうか。
tatsu99さん
回答ありがとうございます。
現状のプログラムですと、Book2のopenにてUserForm2をShowしているので、Unloadした後が取得できません。
Book1のUserForm1ではBook2を開くだけの処理をしているので、UserForm2を開くところまで実行するように処理を変更すれば行けるかもしれませんねっ!
早速試してみたいと思います。

No.1
- 回答日時:
やってみました。
Application.quit は無理だと思いましたが、ThisWorkbook.Close でも前のフォームは消えてしまいますね。
Book2は閉じずに背面に隠し、Book1のフォームを閉じるタイミングで閉じるしかなさそうです。
Book2のUserForm2の閉じるボタンには
Unload Me
Workbooks("Book1.xlsm").Activate
だけ記載する事で、UserForm1は閉じなくなります。
もっと難しい方法(APIなど利用?)で解決方法があるのかもしれませんが。
jmuinyさん
ありがとうございます。
本当は閉じれた方が見栄え的な話だとか諸々な理由でよいのですが、それ以外に方法がなさそうであればやむを得ないと思うので参考にさせていただきますっ!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
VBAでユーザーフォームが自動的に消える
Visual Basic(VBA)
-
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
4
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
5
非表示になったエクセルは?
Excel(エクセル)
-
6
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
7
Excel VBAでブックを閉じる時、複数のブックが開いていると・・・。
Excel(エクセル)
-
8
モーダルフォームとモードレスフォーム
Visual Basic(VBA)
-
9
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
10
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
Excel VBAで別のブックからユーザーフォームの閉じる
その他(プログラミング・Web制作)
-
13
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
14
エクセルでファイルを閉じても空ウィンドウが残ります
Excel(エクセル)
-
15
UserForm1.Showでエラーになります。
工学
-
16
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
17
ユーザーフォーム スクロールバー 非表示にしたい
Excel(エクセル)
-
18
Excel VBA でExcelを終了したいのですが・・
Excel(エクセル)
-
19
UserForm
Visual Basic(VBA)
-
20
別ブックからユーザーフォームを実行したい~!!
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルVBAのフォームを最...
-
5
ユーザーフォームのテキストボ...
-
6
Vba Userformを前面に出すについて
-
7
クリックイベントなのに、2回ク...
-
8
VBAでユーザーフォームを再表示...
-
9
モーダルフォームとモードレス...
-
10
Excelにて、ユーザーフォームで...
-
11
テキストボックスの番号の取得
-
12
EXCEL ユーザーフォームのタイ...
-
13
ブックをCloseまたはQuitで閉じ...
-
14
アクセスのUserFormにはInitial...
-
15
オブジェクト(コントロール)...
-
16
[VB6] フォームを閉じる方法に...
-
17
'ユーザーフォーム右上隅の[×...
-
18
標準モジュールからフォームを...
-
19
ユーザフォームの印刷
-
20
フォームのアクティブと非アク...
おすすめ情報
公式facebook
公式twitter