プロが教える店舗&オフィスのセキュリティ対策術

xボタンを押してbeforecloseに入った中での処理ですが、
ある条件を調べるためにループさせています。
その結果、条件を満足した時点で保存してクロスさせ、ブックを閉じたいのです。
モジュールプロシージャーの中ならexit subと書けますが、
beforecloseの中ではどのようなコードになるのでしょうか。

なお、最後まで条件が満足しない場合は、
保存せずに何もメッセージを出させずクローズしてブックを閉じるため、
以下のようにコードを書いています。
ThisWorkbook.Saved = True
If Workbooks.Count = 1 Then Application.Quit

宜しくお願いします。

質問者からの補足コメント

  • activeworkbook.saveで出来ました。
    お世話になりました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/08/10 21:11

A 回答 (1件)

こんにちは



Workbook_BeforeClose イベントでの処理ですよね?
引数で、Cancel が渡されると思いますが、何もしなければプロシージャ終了後に元の処理(=この場合はClose処理)が継続されます。

>モジュールプロシージャーの中ならexit subと書けますが、
>beforecloseの中ではどのようなコードになるのでしょうか
Exit Subでプロシージャを終了すれば、その後のエクセル側の処理でブックはクローズされます。

引数の Cancel にTrueを設定して終了すると、元のクローズ操作はキャンセルされます。
https://learn.microsoft.com/ja-jp/office/vba/api …
この回答への補足あり
    • good
    • 0
この回答へのお礼

何時もありがとうございます。
exit subが使えたのですね。
やってみたら即終了できました。

ただ、残念ながら「保存しますか」のウインドーが出てしまいます。
これを出さずに、保存して終了したいのですが。
宜しくお願いします。

お礼日時:2023/08/10 20:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!