こんにちは、Ryoです。
私もよく陥るのですが、うっかりアラート表示を強制的に無し状態にして変更したブックを閉じてしまい、そこまでの処理やコードなどが水泡に帰して呆然とする。。。こうなると立ち直るまでに時間がかかりますから、未然に防ぐ為に保存した後に変更有無を確認する処理について書いてみたいと思います。
1.サンプルコード
先ずコード実行前にExcelで新規ブックを開き、名前は何でもOKですがマクロ有効ブックとして拡張子.xlsmとして保存しておいてください。
その上で以下コードを実行します。
Sub Sample1() '先ずブックを保存 ThisWorkbook.Save 'セルA1に書き込むことで変更 Cells(1, 1).Value = "変更を加えました!" '変更されているかどうかを確認 If ThisWorkbook.Saved = False Then MsgBox "変更箇所があります!", vbCritical End If End Sub
コードを実行すると、先ずは上書き保存します。
その後、セルA1に書き込むことで変更を加えて
If ThisWorkbook.Saved = False Then
ここで変更有無を確認します。
構文としては「オブジェクト.Saved」になり、変更有はFalse、変更なしはTrueが返ってきますので、そこで判定します。
◆実行画面
このようになり、変更されたことが検出できます。
◆別の使い道
お気付きの方もいらっしゃるかと思いますが、このSavedにTrueを指定することで
「変更を保存せずにブックを閉じる」ということも出来ます。
Sub Sample2() 'Sample1で使用したブックのセルA2に変更を加える Cells(2, 1).Value = "保存されない変更箇所" '変更は無いものとする ThisWorkbook.Saved = True 'そしてブックを閉じる ThisWorkbook.Close End Sub
このコードを実行すると強制的に閉じられ、確認メッセージも表示されません。
ちなみに私は今実行して正常動作することを確認した訳ですが、保存せずに閉じたので上に書いたコードは保存されていませんでした(笑)
間違えると悲劇になりますが、使いどころを考えれば有用な手段にもなり得ますので、知っておいて損はないと思います。
2.まとめ
オブジェクト.Saved=Falseは変更あり、=Trueは変更なしでIfと合わせて使うことで確認も出来ますし、指定することで強制的に処理することもできるので用途に応じて使い分けると有用かと思いますから機会があれば使ってみてくださいね。
以上、ブック保存した後の変更有無を確認する方法についてでした。
今回の記事が何かの参考になれば幸いです。
Ryo