Excel VBA 質問スレッド №2077 (解決済)
№2075に追加で質問です(bookの保存について)
投稿者 : SAYS 投稿日時 : 2025/02/05(Wed) 11:15:21 OS : Windows 10 EXCEL : Office 365
№2075にてご教授頂きました件で追加で質問させてください。
A3が空欄・空欄では無いに関係なく、保存せずに終了するパターンが出てきました。
№2075でご教授いただいた処理に加えて、そういったことは可能でしょうか?
再度ご教授お願いいたします。
№2075にてご教授頂きました件で追加で質問させてください。
A3が空欄・空欄では無いに関係なく、保存せずに終了するパターンが出てきました。
№2075でご教授いただいた処理に加えて、そういったことは可能でしょうか?
再度ご教授お願いいたします。
スポンサーリンク
[返信 1] Re : №2075に追加で質問です(bookの保存について)
投稿者 : てらてら 投稿日時 : 2025/02/05(Wed) 19:11:28
>A3が空欄・空欄では無いに関係なく、保存せずに終了するパターンが出てきました。
どんなパターンか知りませんが(タスクマネージャーとかですかね?)
保存せずに終了という事はデフォルトの状態がキープされるだけですからプログラムは必要ないと思います。
>A3が空欄・空欄では無いに関係なく、保存せずに終了するパターンが出てきました。
どんなパターンか知りませんが(タスクマネージャーとかですかね?)
保存せずに終了という事はデフォルトの状態がキープされるだけですからプログラムは必要ないと思います。
[返信 2] Re : №2075に追加で質問です(bookの保存について)
投稿者 : SAYS 投稿日時 : 2025/02/06(Thu) 11:41:12
ご教授頂いたコードを記入し実行すると、A3に入力がある場合はExcelでブックを閉じるときに
"変更を保存しますか?" というメッセージが表示されるので、そこから保存せずに終了できるのですが
A3が空欄の場合「A3が空欄のまま終了出来ません」となってしまうのです。
それを回避する方法があればと思い、質問させていただきました。
言葉足らずで申し訳ありません。
ご教授頂いたコードを記入し実行すると、A3に入力がある場合はExcelでブックを閉じるときに
"変更を保存しますか?" というメッセージが表示されるので、そこから保存せずに終了できるのですが
A3が空欄の場合「A3が空欄のまま終了出来ません」となってしまうのです。
それを回避する方法があればと思い、質問させていただきました。
言葉足らずで申し訳ありません。
[返信 3] Re : №2075に追加で質問です(bookの保存について)
投稿者 : てらてら 投稿日時 : 2025/02/06(Thu) 19:19:31
確かに!
そのようなケースがありましたか、、、
BeforeCloseプロシージャを以下のように変更してみてください。
確かに!
そのようなケースがありましたか、、、
BeforeCloseプロシージャを以下のように変更してみてください。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If IsSave = False Then
MsgBox "A3が空欄のまま終了出来ません。" & vbLf & _
"処理を中止します。", vbCritical, "警告"
Cancel = True
Else
'変更を保存しますか?のメッセージを表示させない
ThisWorkbook.Saved = True
Application.Quit
End If
End Sub
[返信 4] Re : №2075に追加で質問です(bookの保存について)
投稿者 : SAYS 投稿日時 : 2025/02/07(Fri) 09:13:02
ありがとうございます。
'変更を保存しますか?のメッセージを表示させない
ThisWorkbook.Saved = True
Application.Quit
を既に試していたのですが(お伝えするべきでした。申し訳ありません)、"変更を保存しますか?" というメッセージが
表示されないようになるものの、強制的に上書き保存せずに終了されるような状態になってしまいます。
A3が空欄→上書き保存は不可・上書き保存せずに終了は可
A3に文字が入力→上書き保存・上書き保存せずに終了両方可
と、したいのです。
自分だけが使うのであれば、上書き保存をしないということは起こらないのですが
共通ファイルの為、他の人が上書き保存せずに終了する場合があると言われてご相談させて頂いた次第なのです。
何度も申し訳ありませんが、よろしくお願い致します。
ありがとうございます。
'変更を保存しますか?のメッセージを表示させない
ThisWorkbook.Saved = True
Application.Quit
を既に試していたのですが(お伝えするべきでした。申し訳ありません)、"変更を保存しますか?" というメッセージが
表示されないようになるものの、強制的に上書き保存せずに終了されるような状態になってしまいます。
A3が空欄→上書き保存は不可・上書き保存せずに終了は可
A3に文字が入力→上書き保存・上書き保存せずに終了両方可
と、したいのです。
自分だけが使うのであれば、上書き保存をしないということは起こらないのですが
共通ファイルの為、他の人が上書き保存せずに終了する場合があると言われてご相談させて頂いた次第なのです。
何度も申し訳ありませんが、よろしくお願い致します。
[返信 5] Re : №2075に追加で質問です(bookの保存について)
投稿者 : てらてら 投稿日時 : 2025/02/07(Fri) 21:09:58
グローバル変数でフラグを設けて、BeforeCloseでA3が空文字の時にフラグをTrueにします。
BeforeSaveが呼ばれるので、ここでフラグがTrueの時に Exit Sub で抜ければ、A3が空欄の時に上書きされずに終了します。
グローバル変数でフラグを設けて、BeforeCloseでA3が空文字の時にフラグをTrueにします。
BeforeSaveが呼ばれるので、ここでフラグがTrueの時に Exit Sub で抜ければ、A3が空欄の時に上書きされずに終了します。
[返信 6] Re : №2075に追加で質問です(bookの保存について)
投稿者 : てらてら 投稿日時 : 2025/02/08(Sat) 09:21:42
グローバル変数なんていらなかったね。
グローバル変数なんていらなかったね。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Range("A1") = "" Then
MsgBox "A1が空白なので上書きできません。"
Cancel = True
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Range("A1") = "" Then
MsgBox "A1が空白なので、上書き保存できません。"
ThisWorkbook.Saved = False
End If
End Sub
[返信 7] Re : №2075に追加で質問です(bookの保存について)
投稿者 : ピロリ 投稿日時 : 2025/02/08(Sat) 11:36:46
■[返信 4] SAYSさん(2025-02-07 09:13:02)の記事
> A3に文字が入力→上書き保存・上書き保存せずに終了両方可
通常(Excel標準)の閉じる操作時は、ファイル保存の確認メッセージ↓を表示しますが、
『このファイルの変更内容を保存しますか? [保存][保存しない][キャンセル]』
> A3が空欄→上書き保存は不可・上書き保存せずに終了は可
というのは、閉じる操作時に、↓下のようなメッセージを表示したいってことですかね?
『保存はできないが、このファイルを閉じて良いの? [閉じる][キャンセル]』みたいな。
質問スレッドNo.2075に、↓下のような記述が有ったので、
> bookを閉じずに、条件を満たすための操作が出来る様にしたいです。
閉じない選択肢(前述の[キャンセル]操作)も欲しいのかなぁ~と・・・
深読みし過ぎだったらご免なさい。 以降は読み捨てて下さい。
↓下は深読みコード(一応載せておきます)です。
■[返信 4] SAYSさん(2025-02-07 09:13:02)の記事
> A3に文字が入力→上書き保存・上書き保存せずに終了両方可
通常(Excel標準)の閉じる操作時は、ファイル保存の確認メッセージ↓を表示しますが、
『このファイルの変更内容を保存しますか? [保存][保存しない][キャンセル]』
> A3が空欄→上書き保存は不可・上書き保存せずに終了は可
というのは、閉じる操作時に、↓下のようなメッセージを表示したいってことですかね?
『保存はできないが、このファイルを閉じて良いの? [閉じる][キャンセル]』みたいな。
質問スレッドNo.2075に、↓下のような記述が有ったので、
> bookを閉じずに、条件を満たすための操作が出来る様にしたいです。
閉じない選択肢(前述の[キャンセル]操作)も欲しいのかなぁ~と・・・
深読みし過ぎだったらご免なさい。 以降は読み捨てて下さい。
↓下は深読みコード(一応載せておきます)です。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ActiveSheet.Range("A3").Value = "" Then 'A3セルが空白なら、
MsgBox "A3が空欄なので上書き保存できません。", vbCritical, "警告"
Cancel = True '上書きをキャンセル
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Ans As Integer
If ThisWorkbook.Saved = False Then '変更内容が有る場合
If ActiveSheet.Range("A3").Value = "" Then 'A3セルが空白なら、
Ans = MsgBox("A3が空欄なので変更内容を保存できません。" & vbCrLf & _
"変更内容を破棄してこのファイルを閉じますか?", _
vbYesNo + vbCritical, "警告")
If Ans = vbYes Then ThisWorkbook.Saved = True '保存しないで閉じる
If Ans = vbNo Then Cancel = True '保存をキャンセル
Else 'A3セルが入力有りなら、
'下の処理は無くても(Excelの標準機能に任せても)良いでしょうけど・・・
Ans = MsgBox("このファイルの変更内容を保存しますか?", _
vbYesNoCancel + vbQuestion, "確認")
If Ans = vbYes Then ThisWorkbook.Save '保存して閉じる
If Ans = vbNo Then ThisWorkbook.Saved = True '保存しないで閉じる
If Ans = vbCancel Then Cancel = True '保存をキャンセル
End If
End If
End Sub
[返信 8] Re : №2075に追加で質問です(bookの保存について)
投稿者 : SAYS 投稿日時 : 2025/02/12(Wed) 08:58:22
てらてら様・ピロリ様お二人ともありがとうざいます。
A3が空欄→✖でbookを閉じようとした場合、「A3が空欄のまま終了出来ません」の後に
"変更を保存しますか?" というメッセージが表示されてしまいました。
ですが、ピロリ様のご提案にて無事回避ができました。
返答が遅くなり申し訳ありません。
てらてら様・ピロリ様お二人ともありがとうざいます。
A3が空欄→✖でbookを閉じようとした場合、「A3が空欄のまま終了出来ません」の後に
"変更を保存しますか?" というメッセージが表示されてしまいました。
ですが、ピロリ様のご提案にて無事回避ができました。
返答が遅くなり申し訳ありません。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-11-05 09:26:27 )