過去ログ

                                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そのものを終了させる
ということをやりたいのですが・・・。
どなたかご教授お願いします。
 ───────────────────────────────────────  ■題名 : Re:シート、ブックの×ボタンを無効にして...  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/2/24(月) 12:47  -------------------------------------------------------------------------
   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

どうでしょう?
 ───────────────────────────────────────  ■題名 : Re:シート、ブックの×ボタンを無効にして...  ■名前 : EBA  ■日付 : 03/2/24(月) 17:03  -------------------------------------------------------------------------
   ▼つん さん:
早速の回答ありがとうございます!
説明不足で大変申し訳ありません。ごめんなさい!m(__)m
状況を詳しく説明させていただきます。
ファイルを開くと、初期選択画面(ユーザーフォーム)が表示され、
そこにコマンドボタンが5個あって、そのボタンをクリックするこ
とによって、各機能のユーザーフォーム(入力、修正、削除、検索、
終了)に分かれるのですが(ユーザーフォームが表示中はエクセル
画面は非表示です)検索画面がエクセルシートなのです。
そこで×ボタンをクリックされないために無効にして、シート上に
作ったボタンをクリックすると、初期選択画面に戻って、終了をク
リックすると、ブックを保存して、ブックを閉じ、EXCELその
ものを終了させるということをやりたいのです・・・。
つんさんから頂いたコードをコピーしたところ、確かに終了ボタン
をクリックするとエクセルの終了までできました。
ですが、私の説明不足のせいで、初期画面から他のユーザーフォー
ムへ行こうとすると、終了してしまうのです。
もう少しのところで、私つまずいております。
ながながとした説明でスミマセン。
何かよいてだてはございませんでしょうか?
 ───────────────────────────────────────  ■題名 : Re:シート、ブックの×ボタンを無効にして...  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 03/2/24(月) 17:14  -------------------------------------------------------------------------
   EBA さん、どもども

>つんさんから頂いたコードをコピーしたところ、確かに終了ボタン
>をクリックするとエクセルの終了までできました。
>ですが、私の説明不足のせいで、初期画面から他のユーザーフォー
>ムへ行こうとすると、終了してしまうのです。

あ、これは、↓ここで、ブックの終了処理を書いてしまってるからですね。

Private Sub UserForm_Terminate()
  blnClose = True
  ThisWorkbook.Close (False)
End Sub

このイベントは、フォームがUnloadされる時点で通るので、
「終了」ボタン以外にUnload meとかあると、通ってしまいます。
右上のバッテンボタンでも通ってしまいます。

なので、「終了」ボタンのクリックイベントに書かれたらOKかな・・・?
私もいまいちEBAさんがされたい処理の流れを把握出来てないので、試行錯誤してみてください。
 ───────────────────────────────────────  ■題名 : Re:シート、ブックの×ボタンを無効にして...  ■名前 : EBA  ■日付 : 03/2/25(火) 9:44  -------------------------------------------------------------------------
   ▼つん さん:
大きなヒントありがとうございました。
ヒントというよりも答えでした。
「終了」ボタンのクリックイベントに貼り付けたらOKでした。
本当にありがとうございました。
説明が下手で申し訳ありませんでした。
これからも頑張りますので宜しくお願いいたします。m(__)m
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 790