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も見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
セルをクリックすると付箋のようなものが表示されるのだが。
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
エクセルで作った新しいウインドウを削除するには・・・
Excel(エクセル)
-
5
エクセルVBAでRangeの引数制限?
Excel(エクセル)
-
6
エクセルVBAで配列内に空白データを入れる場合
その他(Microsoft Office)
-
7
エクセルVBAでNumLockキーの状態を確認する
Excel(エクセル)
-
8
指定の動作中ユーザーフォーム終了方法
Excel(エクセル)
-
9
エクセルVBAでUserFormを起動した時
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
検索の画面がでなくなってしま...
-
Vba LongPtrについて教えてくだ...
-
ラジオボタンの初期指定
-
SendMessage関数がうまく動作し...
-
ウィンドウが閉じない
-
ボタンのハンドルウィンド取得...
-
ゲームでは結局どっちが良いの?
-
ダイアログボックスのタスクバ...
-
突然ですが、DirectX9について...
-
C#でファイル転送プログラムWin...
-
VC++でタスクバーに表示させな...
-
UWSCで特定のChromeのタブをア...
-
[VBA] UserForm を Excel の W...
-
リモートデスクトップの中のウ...
-
隠れたウィンドウの画面をキャ...
-
スクロールバーについて
-
非アクティブのウィンドウを最...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ゲームでは結局どっちが良いの?
-
検索の画面がでなくなってしま...
-
勝手にウィンドウが開いて止ま...
-
ラジオボタンの初期指定
-
VBA .Value=.Value ?
-
他のアプリケーションの終了処理
-
Excelの上下を固定したい
-
Vba LongPtrについて教えてくだ...
-
[VBA] UserForm を Excel の W...
-
作成したウインドウのサイズを...
-
「&HFFFF」「&H1A」とは?
-
Alt+P,Alt+NをPostmessageで送...
-
EnumChildWindowsの使い方(VBA)
-
MFC ダイアログ上のID取得につ...
-
ダイアログをスクロールさせるには
-
ExcelVBAでAPIを使って外部ウイ...
-
ExcelのBOOKが消えた!
-
Console.WriteLine で表示されない
おすすめ情報