• ベストアンサー

EXCELのフォームを自動的に消す方法を知りたいのですが

EXCELのフォームを自動的に消す方法を知りたいのですが 今あるExcelを開いた時に自動でフォームが起動されます マクロでそのファイルを開く フォームを閉じる処理をやりたいです

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

フォームとは、UserForm のことでしょうか。Excelには、Access と違い、該当するものが、3つありますから、どれかすぐには分かりにくいです。 一応、UserForm に限定しますが、どれも要領は同じです。 Sub Auto_Open() か、Private Sub ThisWorkbook_Open() という名前のプロシージャの中に、UserForm1.Show などという行があるなら、それが自動的に開く機能を持っています。だから、以下のようにします。 '// Sub Test1() Dim myTime As Date  myTime = Now + TimeSerial(0, 0, 5) '←終了時間(h, m, s)  Application.OnTime myTime, "CloseUserForm"  UserForm1.Show False '←UserFormの起動 End Sub Sub CloseUserForm()  Unload UserForm1 End Sub

meteo14
質問者

補足

ありがとうございます。 ただUnloadでできるかは質問する前に試したんですが ダメでした。 マクロでファイルオープンしてそのファイルが自動でフォームが起動するようになっています それに対してフォームを閉じたいのですが、 結論開いたファイルのほうにUnloadをいれないといけないそうなのでできませんでした 分かりにくいので再度載せ直します

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

>マクロでファイルオープンしてそのファイルが自動でフォームが起動するようになっています >結論開いたファイルのほうにUnloadをいれないといけないそうなのでできませんでした ちょっと確認しますね。 もしかして、「起動したファイルの外から、UserForm を消す方法」という意味のではないでしょうか? 一般的には、Unload は自体は間違いないです。起動するファイルのマクロ・コードはプロテクトされているのですか?そうでなければ、Auto_Open やThisWorkbook_Open の中に、OnTimeを入れて、Unload UserForm を呼んであげれば可能です。「自動的に」ということは、そういうことだと思います。 しかし、他のファイルからUserForm を消すということは、少し考えてみれば分かるはずですが、「自動的」ということは、まず、UserForm が立ち上がっているかどうかを、検査していかなくてはなりません。それには、ずっと、監視体勢にあるということですから、特殊なイベントを作ってあげなくてはなりません。数年、そのようなコードは書いたことありません。その上、他のファイルから操作する方法は、確か、UserForm のハンドルか、Caption を取る方法だったと思います。既存の出来上がったマクロから、「自動処理」というのは、かなり難しい技術だと思います。 もう少し、具体的な状況を書いてください。

meteo14
質問者

補足

回答ありがとうございます。 うまく伝わるか分かりませんが、 マクロが組み込んであるファイルAで実行し、 Auto_OpenでUserFormが立ち上がるファイルBを開きます。 その際、ファイルBのUserFormを消す処理ができたらって思っております。 正直、ファイルBを開いたとき、フォームを手動で閉じればそのままマクロは 実行されますが、おっしゃるとおりかなり難しい技術だと思っております。

関連するQ&A