ユーザーフォームについて入力中の回答があります。ページを離れますか?※ページを離れると、回答が消えてしまいますページを離れるA回答を続ける入力中のお礼があります。WinXpHomeSP2Excel2002SP3Excelのユーザーフォーム上にあるコマンドボタンをクリックすると、アクティブになっているシートを印刷するプログラムを作成しています。印刷前に印刷ダイアログを表示し、プリンタの設定およびプレビューを可能にしたいため、Application.Dialogs(xlDialogPrint).Showを使用しています。ユーザーフォームはその直前でいったんHideし、上記コードの直後に再度Showしています。表示された印刷ダイアログの「プレビュー」ボタンをクリックすると、Hideしたはずのユーザーフォームがプレビュー画面の前面に表示されてしまい、プレビュー画面、ユーザーフォーム画面のどちらのボタンも効かなくなって制御不能となってしまいます。プレビューしてもユーザーフォームが立ち上がってこなくなる方法を教えてください。通報するこの質問への回答は締め切られました。>UserForm1をいったんHideした後にまたShowするため、※1が実行されその後は新しくUserForm1が立ち上がったのと同じ動作をします。Showすれば必ずActivateイベントが発生します。その処理は、UserForm_Initializeイベントに書くと拙いのですか?Initializeイベントであれば、HideしてShowしてもそこを通りませんので実行されません。絶対Activateイベントに書かなければならないコードであり、かつ、今回のように場合によっては、Activateイベントのコードを実行させたくない時は実行させるかさせないか判断させるための変数をモジュール変数としてとっておきそれを利用する手もあります。それから、>このUserForm1が閉じられた後、※2を実行してしまうため、エラーになってしまいうまくいきません。何をしてるのか分かりませんのでこれくらいのアドバイスしかできませんが、さらに言うとUserForm.Showの後に、(※2)のように何かの処理をさせるコードを書くことはありません。書くとすれば、UserFormをYesNoのMsgBoxのように使う場合です。Activateイベントの処理内容、(※2)の処理内容が分かればもっと的確な回答が寄せられるでしょう。通報するこの回答へのお礼ご回答ほんとうに感謝いたします。ご教示いただいたことをもとに、以下のように修正しました。1.ActivateイベントからInitializeに書き直した。2.CommandButton1_Clickの流れ全体を見直し、UserForm.Showの後にあった処理をその前に持ってきた。No4さんの回答を参考にさせていただき、結局UserForm.Showはなくなりましたが、全体にコードがすっきりしました。情報不足の中、的確なご回答をいただき、ほんとうにありがとうございました。割り込み失礼しました。