
ブックを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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
VBAでユーザーフォームが自動的に消える
Visual Basic(VBA)
-
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
-
4
UserForm1.Showでエラーになります。
工学
-
5
Excel VBAで別のブックからユーザーフォームの閉じる
その他(プログラミング・Web制作)
-
6
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
7
別ブックからユーザーフォームを実行したい~!!
Visual Basic(VBA)
-
8
Excel VBAでブックを閉じる時、複数のブックが開いていると・・・。
Excel(エクセル)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
モーダルフォームとモードレスフォーム
Visual Basic(VBA)
-
11
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
12
【VBAユーザーフォームで閉じるボタンを表示したくない】
Visual Basic(VBA)
-
13
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
14
Excel VBA でExcelを終了したいのですが・・
Excel(エクセル)
-
15
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
16
Excel VBAでユーザーフォームだけ表示したい
Visual Basic(VBA)
-
17
ユーザーフォームが消えない
Excel(エクセル)
-
18
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
19
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
20
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ACCESSのフォーム、開くんです...
-
フォームウィンドウを最前面に...
-
クリックイベントなのに、2回ク...
-
モーダルフォームとモードレス...
-
MSGBOXのフォント大きさ変更
-
エクセルVBAのフォームを最...
-
ExcelVBAのユーザーフォームの...
-
Access VBA コントロールの参照...
-
ユーザーフォームのテキストボ...
-
任意のフォームが表示されてい...
-
ユーザーフォーム上に現在日時...
-
Form_Load と Form_Activate の...
-
[VB6] フォームを閉じる方法に...
-
【VBAユーザーフォームで閉じる...
-
アクセス2013 フォームが...
-
VBAでユーザーフォームを再表示...
-
コントロールの存在確認
-
フォームのテキストボックスな...
-
Excelにて、ユーザーフォームで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
モーダルフォームとモードレス...
-
ユーザーフォームのテキストボ...
-
エクセルVBAのフォームを最...
-
Form_Load と Form_Activate の...
-
ExcelVBAのユーザーフォームの...
-
フォームウィンドウを最前面に...
-
VBAでユーザーフォームを再表示...
-
MSGBOXのフォント大きさ変更
-
エクセルVBA フォーム上でOnkey...
-
【VBAユーザーフォームで閉じる...
-
Hideについて(.NET)
-
VBA コンボボックスとテキスト...
-
ACCESSのフォーム、開くんです...
-
クリックイベントなのに、2回ク...
-
Access VBA コントロールの参照...
-
Excelにて、ユーザーフォームで...
-
'ユーザーフォーム右上隅の[×...
-
コントロールの存在確認
-
ユーザーフォームのコピー?
おすすめ情報