
ブックを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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) 開いているフォルダを全て閉じる、マクロを教えて下さい 3 2022/08/28 08:42
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでユーザーフォームが自動的に消える
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
ExcelVBAでユーザーフォームが勝手に閉じてしまいます。
その他(コンピューター・テクノロジー)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
6
Excel VBAでブックを閉じる時、複数のブックが開いていると・・・。
Excel(エクセル)
-
7
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
8
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
9
UserForm1.Showでエラーになります。
工学
-
10
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
-
11
(Excel+VBA)ユーザーフォームのみ表示で完結させたい。
Excel(エクセル)
-
12
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
13
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
14
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
15
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
16
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
17
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
18
Excel VBAで別のブックからユーザーフォームの閉じる
その他(プログラミング・Web制作)
-
19
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
20
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
VBAでユーザーフォームを再表示...
-
クリックした場所にFormを開く
-
エクセルのチェックボックスの...
-
Microsoft Formsの「個人情報や...
-
二つのフォームを一緒に移動
-
VBAのテキストフォームの折り返...
-
パソコンの画面に合わせてユー...
-
エクセルのフォームをマクロで...
-
EXCEL VBA ユーザーフォームの...
-
テキストボックス入力データの...
-
ユーザーフォームのテキストボ...
-
フォームウィンドウを最前面に...
-
ユーザーフォーム上に現在日時...
-
フォームのテキストボックスな...
-
フォームを画面のど真ん中に表...
-
(Excel+VBA)ユーザーフォームの...
-
MSGBOXのフォント大きさ変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Form_Load と Form_Activate の...
-
VBAでユーザーフォームを再表示...
-
Microsoft Formsの「個人情報や...
-
クリックイベントなのに、2回ク...
-
ユーザーフォームのテキストボ...
-
ユーザーフォーム上に現在日時...
-
ACCESSのフォーム、開くんです...
-
エクセルのチェックボックスの...
-
エクセルVBAのフォームを最...
-
VB.NETでフォームロード中のエ...
-
EXCEL VBA ユーザーフォームの...
-
VBA(エクセル)のユーザー...
-
【Excel VBA】ユーザフォームを...
-
Hideについて(.NET)
-
(Excel+VBA)ユーザーフォームの...
-
モーダルフォームとモードレス...
-
VBA コンボボックスとテキスト...
-
アクセス2013 フォームが...
おすすめ情報