Excel VBA 質問スレッド №2075 (解決済)

上書き保存の条件設定

投稿者 : SAYS     投稿日時 : 2025/02/03(Mon) 17:03:06     OS : Windows 10     EXCEL : Office 365
初めて質問させて頂きます。

上書き保存をするために条件を設定しています。
現状だとメッセージを表示した後bookが閉じてしまうのですが
bookを閉じずに、条件を満たすための操作が出来る様にしたいです。
色々検索し、試してみたのですがうまく行きません。
どのようにすればよいか、ご教授お願いいたします。


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    
    If ActiveSheet.Range("A3").Value = "" Then
        MsgBox "A3が空欄なので上書き保存出来ません。" & vbLf & _
                    "処理を中止します。", vbCritical, "警告"
            Cancel = True
    End If
    
End Sub

スポンサーリンク
[返信 1] Re : 上書き保存の条件設定
投稿者 : ピロリ     投稿日時 : 2025/02/03(Mon) 18:44:13
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    
    Cancel = True
    
End Sub

↑は上書き保存をキャンセルするだけです。
ブックのクローズをキャンセルしたいのなら↓では。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    Cancel = True
    
End Sub

[返信 2] Re : 上書き保存の条件設定
投稿者 : てらてら     投稿日時 : 2025/02/03(Mon) 20:03:42
こんにちは。
やりたい事は、こんな感じでしょうか?
参考にしてください。

'/// 以下のコードはThisWorkbookモジュールに書きます。
Function IsSave() As Boolean
    Dim b As Boolean
    b = False
    
    If ActiveSheet.Range("A3").Value <> "" Then b = True
    
    IsSave = b
End Function

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If IsSave = False Then
        MsgBox "A3が空欄のまま終了出来ません。" & vbLf & _
                    "処理を中止します。", vbCritical, "警告"
        Cancel = True
    End If
    
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If IsSave = False Then
        MsgBox "A3が空欄なので上書き保存出来ません。" & vbLf & _
                    "処理を中止します。", vbCritical, "警告"
        Cancel = True
    End If
End Sub

もし初回にA3セルを空白で開きたい場合は、少々工夫が必要になります。

[返信 3] Re : 上書き保存の条件設定
投稿者 : SAYS     投稿日時 : 2025/02/04(Tue) 09:51:43
ご教授ありがとうございます。

↑では、「ctrl+S」や「ファイル→上書き保存」が出来てしまうので使用をさけていました。
こちらの制御は別になるのでしょうか?

勉強不足で申し訳ありません。

[返信 4] Re : 上書き保存の条件設定
投稿者 : SAYS     投稿日時 : 2025/02/04(Tue) 09:54:45
ピロリ様

お名前が抜けており、大変失礼いたしました。

■[返信 3] SAYSさん(2025-02-04 09:51:43)の記事
> ご教授ありがとうございます。

> ↑では、「ctrl+S」や「ファイル→上書き保存」が出来てしまうので使用をさけていました。
> こちらの制御は別になるのでしょうか?

> 勉強不足で申し訳ありません。

[返信 5] Re : 上書き保存の条件設定
投稿者 : SAYS     投稿日時 : 2025/02/04(Tue) 09:59:57
てらてら様

ご教授ありがとうございます。
おっしゃる通りで、希望通りに動作ができました。
コードの意味を分かりかねていますので、勉強していきます。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-02-07 22:51:36 )
タイトルとURLをコピーしました