• ベストアンサー

ExcelVBAで指定外のUserFormを閉じる

複数のUserFormを表示させた時に、 コードで指定したUserForm以外のUserFormを閉じる方法を教えてください。 Unload UserForm1、Unload UserForm2、Unload UserForm3 このような方法では、手間がかかってしまいます。 何か良い方法がありましたら教えてください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

はて?? >3つのUserFormを表示させた場合、 >1つのUserFormを画面上に残した状態で、残りの2つのUserFormを閉じる方法 回答したマクロがまさにそのように作動しますが、いったいどういう事でしょうか。 回答のマクロをまだ試してもいないのですか? それから意味が通じていないようなので、一応補足しておきます。 再掲: >どこから実行したいのか不明 何らかの方法でユーザーフォームを3つとか表示させてます ここから「どこに記載したマクロを実行して」要らない2つをアンロードしたいのですか。 ・たとえば標準モジュールに記載したマクロを新たに実行する(回答は基本このパターンを想定しています) ・たとえば3つ開いているユーザーフォームのどれかに載っている、たとえばコマンドボタン等から実行する  その場合、残したいユーザーフォームと、いままさにボタンをクリックしたユーザーフォームの関係はどうなっているのですか。 ・たとえば「コマンドボタンがクリックされたそのユーザーフォーム」が残って欲しくて、他を閉じたいのか ・たとえば「どのユーザーフォームのボタンをクリックしても関係なし」に、特定の1つのユーザーフォームを残したいのか #でもまぁ、すでに2回も回答してますので、これ以上はあんまり回答を重ねるのは、こちらも大変ですしあなたも説明するのはメンドクサイでしょう。 まず自力で適切に応用してみて、それでも上手くいかないようなら一回このご相談は「解決」の操作で閉じて、改めて詳しい状況を添えてご相談を新たに投稿し直してみてはいかがですか。

di6351
質問者

お礼

大変申し訳ありません。 ご説明の通りUserForm1を残した状態で、他のUserFormを閉じる事が出来ました。 ありがとうございます。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

どこから実行したいのか不明ですが,とりあえず  dim o as object  for each o in userforms  if o.caption <> "UserForm1" then   unload o  end if  next みたいなカンジで,ふつーに巡回してけばいいのでは。

di6351
質問者

補足

説明が足らず、申し訳ありません。 例えば、3つのUserFormを表示させた場合、 1つのUserFormを画面上に残した状態で、残りの2つのUserFormを閉じる方法があればと思いました。

関連するQ&A