
No.3ベストアンサー
- 回答日時:
こんにちは。
お邪魔します。なんて云うか、
Excel.Window操作に関するイベントは限られていて、
何をするにしても工夫がいるというか融通が利かないというか、、、。
この課題の本質は、
Applicationを閉じるボタンへのクリックをトリガに出来れば、
後は簡単なのに、ってところですね。
やれば出来ないこともないでしょうけれど、
もはやVBAとは呼べない程の高度な内容になるかと思います。
Version互換(Win/Excel)の問題も手数が必要そうですし、
結構大変そうなので、私は、お手上げです。
多少、限定的で簡略化したものなら、純粋なVBAで出来ます。
Workbook_WindowDeactivate
の、後に続けて、
Workbook_WindowActivate
が、必ず発効することを利用して、
Windows.Count
が、減少なら、閉じる。
' ' ==========ThisWorkbookモジュール==========
Private nWin As Long
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
If Windows.Count < nWin Then
Application.Quit ' ' EXCELを終了する場合(1/2択)
' ThisWorkbook.Close ' ' 自ブックのみ閉じる場合(2/2択)
End If
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
nWin = Windows.Count
End Sub
' ' ===============================
限定的という意味は、
ウィンドウ側の閉じるボタンでウィンドウを(非表示ではなく)閉じる
場合にも、
ブックを閉じる(またはExcelを終了する)ように動作してしまうことです。
しかし、ウィンドウ表示の設定を変更する場合は、
デザインモードを使うようにすれば困ることもないです。
それでいいかどうかの判断は、現場次第ですけれども。
とりあえず試してから検証検討してみてください。
他に、
閉じるボタンを覆うように専用のボタンを配置しておく
ような方法もありかも知れませんが、
それなら、#1さんのご提案の方が合理的ですよね。
ご参考まで。
No.4
- 回答日時:
途中から失礼します。
#参考情報として。2007,2010では、
[Application.ShowWindowsInTaskbar プロパティ]の設定によって挙動が違います。
Excelのオプション-詳細設定-「すべてのウィンドウをタスクバーに表示する」項目です。
デフォルトではチェックが入って True になっています。
この状態ではApplicationウィンドウ右上の×ボタンで複数ウィンドウを閉じる動作になりません。
このチェックを外すと2003以前のバージョンと一緒で複数ウィンドウを閉じExcel終了の動作になります。
(複数Bookの場合も同様)
もし、「面倒」を解消させたい個人的事情なら、「すべてのウィンドウをタスクバーに表示する」
この項目のチェックを外すだけで良いかもしれません。
また、作業中は全ウィンドウをタスクバー表示させたいのでチェックを外したくないなら、
終了時に[Shift]キー押しながらApplicationウィンドウ右上の×ボタンでExcel終了の動作になります。
あくまで参考です。
複数BookのケースでもExcel終了の動作になりますので ThisWorkbook.Close の要望からは外れますし。
プロシージャを組みたい、という事なのでcj_moverさん案おすすめです。 :)

No.2
- 回答日時:
No.1です。
私が回答した方法は、Windowをいくつ開いていても一発で閉じる(終了する)方法です。
>単一ブックで複数のウィンドウを開いている時は、エクセル本体の右上×をクリックすると1つずつしかウィンドウが閉じず、面倒
とあったので、このように回答した次第です。
エクセル本体の×ボタンで閉じたいということでVBAで行いたいということなのでしょうか?
うーん、通常(Windowが一つの時)×ボタンのイベントは「Workbook_BeforeClose」なのですが、複数のWindowを開いていると発生しないようです。
ですので、簡単にはできないように思います。私ではわかりません、すみません。
でも、面倒というだけであれば、先に回答した方法でいいのではないでしょうか。

No.1
- 回答日時:
こんばんは。
手元にあるエクセルがバージョン2010なので、それで回答します。
WindowDeactivateイベントは「Windowがアクティブでなくなった時」に発生するイベントです。
Windowを閉じた時に発生ししますが、それ以外でもほかのWindowが」アクティブ(移ったとき)になったときにも発生します。
エクセルを残してブックを閉じるのなら、ファイルタブ→閉じる でできます。
エクセルを終了するのなら、ファイルタブ→終了 でできます。
バージョン2007なら、オフィスボタンの中にあると思います。
この二つを「クイックアクセスツールバー」に登録しておけばいいでしょう。
ありがとうございます。
私は、単一ブックで2つのウィンドウを開いている時にエクセル本体の右上×をクリックして、1つのウィンドウを閉じたらエクセル自体(若しくはブック一つ)が閉じるようなプロシージャを組みたいのですが、こういうことって可能なのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBの画面で、全ウィンドウを一気に閉じるには
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
エクセルで作った新しいウインドウを削除するには・・・
Excel(エクセル)
-
-
4
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
5
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
6
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
7
コマンドボタンやイメージにマウスをのせるとボタン名を表示したい
Excel(エクセル)
-
8
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
9
エクセルで折り返しと縮小の同時設定は無理?
Excel(エクセル)
-
10
Excelのシート上のShapeにイベントは設定できる?
Excel(エクセル)
-
11
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
12
メッセージボックスの非モーダル化について
Visual Basic(VBA)
-
13
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
14
特定のファイルのみリボンの非表示、ウィンドウサイズの固定
Excel(エクセル)
-
15
一定時間間隔でセルを点滅させたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
エクセルで1行目から3行目が消...
-
勝手にウィンドウが開いて止ま...
-
ExcelのBOOKが消えた!
-
検索の画面がでなくなってしま...
-
「&HFFFF」「&H1A」とは?
-
[VBA] UserForm を Excel の W...
-
皆さん、おはようございます♪ ...
-
ラジオボタンの初期指定
-
Tera Termに他のアプリから文字...
-
コンボボックスのリストに水平...
-
OutlookでRSSフィードやメモの...
-
ゲームでは結局どっちが良いの?
-
focusメソッドを使ってもカーソ...
-
CTなどでいう,ウィンドウレベ...
-
他アプリのアクティブな子ウイ...
-
VBで外部プログラムを位置のみ...
-
UWSCで特定のChromeのタブをア...
-
パソコン関連)何度消してもま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ラジオボタンの初期指定
-
勝手にウィンドウが開いて止ま...
-
皆さん、おはようございます♪ ...
-
検索の画面がでなくなってしま...
-
Vba LongPtrについて教えてくだ...
-
【VB2008】 マウス操作の一時的...
-
[VBA] UserForm を Excel の W...
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
UWSCで特定のChromeのタブをア...
-
ExcelのBOOKが消えた!
-
「&HFFFF」「&H1A」とは?
-
ゲームでは結局どっちが良いの?
-
作成したウインドウのサイズを...
-
エクセルで1行目から3行目が消...
-
Console.WriteLine で表示されない
-
Alt+P,Alt+NをPostmessageで送...
-
EnumChildWindowsの使い方(VBA)
おすすめ情報