Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
(保存キャンセル後)一時停止、その後再保存を求めるには?
投稿日時: 19/09/30 10:17:06
投稿者: Yoasn_3218

VBA初心者のため質問の主旨、表現がままならぬことご容赦下さい。
 
入力後、ファイル保存をMsgBoxで確認させ、キャンセルの場合に再入力、訂正を行うための一時停止をさせ、その後に改めて保存を確認、保存完了をさせるようなコードはどう表現したら良いのでしょうか?
Gotoで分岐させたとして、そのサブプロシージャ部分のEndSubが共通にして良いのかもよくわかりません。
 
よろしくお願いします。

回答
投稿日時: 19/09/30 10:37:57
投稿者: sk

引用:
入力後ファイル保存をMsgBoxで確認させ、
キャンセルの場合に再入力、訂正を行うための一時停止をさせ、
その後に改めて保存を確認、保存完了をさせるようなコードは
どう表現したら良いのでしょうか?

具体的に、どのタイミングでその処理を呼び出したいのでしょうか。
 
・いずれかのセルの値が変更された時。
 
・ブックを上書き保存しようとした時。
 
・上記以外(ユーザーフォームに対する操作など)。

投稿日時: 19/09/30 11:00:30
投稿者: Yoasn_3218

sk 様
 
・どのタイミングで? ですが、
 
MsgBox("Cancel?",vbOKCancel,"保存確認") を利用して
  
Dim ans As Integer
    ans = MsgBox("保存して良いですか?", vbOKCancel, "保存確認")
     
    If ans = vbCancel Then 'キャンセル選択の場合の処理 LABEL1へジャンプ
    GoTo LAVEL1
      
     Els ' Els の先は、ファイル名自動付与して保存のコードを書く
 
 
Elsの後の記述例(案)
Application。Dialogs(xDialogSaveAs).Show Arg1:=Range("文字列セル ").Value,Arg2:=12
 
 
LABEL1 以下にファイルに訂正入力(変更)を行った後に、再度ファイル保存することを
求めるメッセージボックス?を出させてファイル新規保存を完結させたい。
 
 
ご質問の意味、コード記述など誤りありましたらご容赦下さい。
 
  
  
 
・ブックを上書き保存しようとした時。 → 上記で
  
・上記以外(ユーザーフォームに対する操作など)。

回答
投稿日時: 19/09/30 11:06:54
投稿者: sk

引用:
ブックを上書き保存しようとした時

ならば Workbook オブジェクトの BeforeSave イベントでどうぞ。
 
( ThisWorkbook モジュール)
-----------------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 
    Dim ans As Integer
     
    ans = MsgBox("保存して良いですか?", vbOKCancel, "保存確認")
      
    If ans = vbCancel Then
        Cancel = True
    End If
 
End Sub
-----------------------------------------------------------------

投稿日時: 19/09/30 11:49:52
投稿者: Yoasn_3218

sk 様
 
回答ありがとうございました。
 
(基本的な事項をお訊きしてしまったようで恐縮です)
 
 
今後ともよろしくお願いします。