構文
構文は以下の通りです。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' 実行したい処理をここに記述します
End Sub
' 実行したい処理をここに記述します
End Sub
解説
Workbook_BeforeSaveイベントプロシージャは、ブック(Excelファイル)が保存される前に実行されます。引数は以下の内容となります。
引数 | 内容 |
SaveAsUI | 保存ダイアログが表示されるかどうかを示す真偽値(True/False)です。Trueの場合、保存ダイアログが表示され、ユーザーが保存場所やファイル名を指定することができます。Falseの場合、ダイアログが表示されず、既定の場所にファイルが保存されます。 |
Cancel | 保存処理をキャンセルするかどうかを示す真偽値です。Trueを指定すると保存処理がキャンセルされ、Falseを指定すると通常通り保存が行われます。 |
プログラミング例
例として、ブックが保存される前に特定のセルに値が入力された場合、自動的に日付を挿入する処理を作成してみましょう。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim targetCell As Range
Set targetCell = ThisWorkbook.Sheets("Sheet1").Range("A1") ' 監視するセルの範囲を指定
If targetCell.Value <> "" Then
targetCell.Offset(0, 1).Value = Date ' 現在の日付を挿入
End If
End Sub
Dim targetCell As Range
Set targetCell = ThisWorkbook.Sheets("Sheet1").Range("A1") ' 監視するセルの範囲を指定
If targetCell.Value <> "" Then
targetCell.Offset(0, 1).Value = Date ' 現在の日付を挿入
End If
End Sub
上記のプログラムをWorkbookのイベントプロシージャであるWorkbook_BeforeSaveに記述することで、保存前に指定したセルに入力があった場合に自動的に日付が挿入されます。
まとめ
Workbook_BeforeSaveイベントプロシージャは、ブックが保存される前に特定の処理を実行するためのものです。これを利用することで、データの妥当性チェックや自動バックアップなどの機能を追加することができます。