Page 790 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼シート、ブックの×ボタンを無効にしてユーザーフォームから終了させるには? EBA 03/2/24(月) 10:46 ┗Re:シート、ブックの×ボタンを無効にして... つん 03/2/24(月) 12:47 ┗Re:シート、ブックの×ボタンを無効にして... EBA 03/2/24(月) 17:03 ┗Re:シート、ブックの×ボタンを無効にして... つん 03/2/24(月) 17:14 ┗Re:シート、ブックの×ボタンを無効にして... EBA 03/2/25(火) 9:44 ─────────────────────────────────────── ■題名 : シート、ブックの×ボタンを無効にしてユーザーフォームから終了させるには? ■名前 : EBA ■日付 : 03/2/24(月) 10:46 -------------------------------------------------------------------------
またまたお世話になります。 EXCELVBA初心者のEBAです。 早速質問なのですが EXCELシート作業中は、シート、ブック両方の×ボタンを無効にして ユーザーフォームの「終了ボタン」をクリックすると ブックを保存して、ブックを閉じ、EXCELそのものを終了させる ということをやりたいのですが・・・。 どなたかご教授お願いします。 |
EBA さん、こんにちは >EXCELシート作業中は、シート、ブック両方の×ボタンを無効にして >ユーザーフォームの「終了ボタン」をクリックすると >ブックを保存して、ブックを閉じ、EXCELそのものを終了させる >ということをやりたいのですが・・・。 >どなたかご教授お願いします。 こんなやり方はどうなんでしょうか・・・? Public blnClose As Boolean '=ユーザーフォーム============================================= Private Sub CommandButton1_Click() Unload Me End Sub Private Sub UserForm_Terminate() blnClose = True ThisWorkbook.Close (False) End Sub '=ThisWorkbook============================================= Private Sub Workbook_BeforeClose(Cancel As Boolean) If blnClose = False Then MsgBox "フォームのボタンで終了させてください!" Cancel = True Else Application.Quit End If End Sub Private Sub Workbook_Open() blnClose = False End Sub どうでしょう? |
▼つん さん: 早速の回答ありがとうございます! 説明不足で大変申し訳ありません。ごめんなさい!m(__)m 状況を詳しく説明させていただきます。 ファイルを開くと、初期選択画面(ユーザーフォーム)が表示され、 そこにコマンドボタンが5個あって、そのボタンをクリックするこ とによって、各機能のユーザーフォーム(入力、修正、削除、検索、 終了)に分かれるのですが(ユーザーフォームが表示中はエクセル 画面は非表示です)検索画面がエクセルシートなのです。 そこで×ボタンをクリックされないために無効にして、シート上に 作ったボタンをクリックすると、初期選択画面に戻って、終了をク リックすると、ブックを保存して、ブックを閉じ、EXCELその ものを終了させるということをやりたいのです・・・。 つんさんから頂いたコードをコピーしたところ、確かに終了ボタン をクリックするとエクセルの終了までできました。 ですが、私の説明不足のせいで、初期画面から他のユーザーフォー ムへ行こうとすると、終了してしまうのです。 もう少しのところで、私つまずいております。 ながながとした説明でスミマセン。 何かよいてだてはございませんでしょうか? |
EBA さん、どもども >つんさんから頂いたコードをコピーしたところ、確かに終了ボタン >をクリックするとエクセルの終了までできました。 >ですが、私の説明不足のせいで、初期画面から他のユーザーフォー >ムへ行こうとすると、終了してしまうのです。 あ、これは、↓ここで、ブックの終了処理を書いてしまってるからですね。 Private Sub UserForm_Terminate() blnClose = True ThisWorkbook.Close (False) End Sub このイベントは、フォームがUnloadされる時点で通るので、 「終了」ボタン以外にUnload meとかあると、通ってしまいます。 右上のバッテンボタンでも通ってしまいます。 なので、「終了」ボタンのクリックイベントに書かれたらOKかな・・・? 私もいまいちEBAさんがされたい処理の流れを把握出来てないので、試行錯誤してみてください。 |
▼つん さん: 大きなヒントありがとうございました。 ヒントというよりも答えでした。 「終了」ボタンのクリックイベントに貼り付けたらOKでした。 本当にありがとうございました。 説明が下手で申し訳ありませんでした。 これからも頑張りますので宜しくお願いいたします。m(__)m |