• ベストアンサー

VBA ユーザーフォームを閉じる時にイベント

VBAでユーザーフォームを閉じるときに名前を付けて保存しブックを閉じるようにしたいのですが、 ユーザーフォームを閉じるときのイベントの起こし方がよく分かりません。 また名前を付けて保存しブックを閉じるのはこれでよろしいでしょうか? Application.Dialogs(xlDialogSaveAs).Show ActiveWorkbook.close

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

UserForm_Terminateイベントを使ってみます。 >これでよろしいでしょうか それでもイイと思いますが,アクティブワークブックが「何」なのかがご説明では不明瞭なので,ダメかもしれません。やってみれば判ることですが。 マクロを持っているブックを保存したいならthisworkbookを使った方が安全ですし,対象のブックを明確に指定して操作するマクロを書くよう心がけてください。 またユーザーが「保存しない」選択をした(誤操作等を含めて)場合の対処も抜けています。 application.getsaveasfilenameを使って保存名(もしくはキャンセル操作)を受けとり,マクロ側で保存するならする,しないならしないで抜けるなど適切な対処を行うよう丁寧にマクロに書いた方が安心とは思います。 ざっくりと作成例: dim res res = application.getsaveasfilename() if res <> false then 対象のブック.saveas filename:=res end if 対象のブック.close savechanges:=false

Ascheriit
質問者

お礼

回答ありがとうございます。 丁寧にマクロを書いたらできました。 本当にありがとうございました。

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

ユーザーが閉じるボタンで閉じたときの記述は以下でいいです。 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then '名前を付けて閉じる処理を記述 End If End Sub 名前を付けて保存するのは、提示のものでもいいのですが、保存をキャンセルされた時の処理はどうするのかも考えておいた方がいいです。

Ascheriit
質問者

お礼

回答ありがとうございました。 できましたー。