Skip to main content

Workbook.BeforeSave event

Occurs before the workbook is saved.


expression.BeforeSave (SaveAsUI, Cancel)

expression A variable that represents a Workbook object.


Name Required/Optional Data type Description
SaveAsUI Required Boolean True if the Save As dialog box is displayed due to changes made that need to be saved in the workbook.
Cancel Required Boolean False when the event occurs. If the event procedure sets this argument to True, the workbook isn't saved when the procedure is finished.

Return value



The following example prompts the user for a yes or no response before saving the workbook.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    a = MsgBox("Do you really want to save the workbook?", vbYesNo)
    If a = vbNo Then Cancel = True
End Sub

The following example uses the BeforeSave event to verify that certain cells contain data before the workbook can be saved. The workbook cannot be saved until there is data in each of the following cells: D5, D7, D9, D11, D13, and D15.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    'If the six specified cells don't contain data, then display a message box with an error
    'and cancel the attempt to save.
    If WorksheetFunction.CountA(Worksheets("Sheet1").Range("D5,D7,D9,D11,D13,D15")) < 6 Then
        MsgBox "Workbook will not be saved unless" & vbCrLf & "All required fields have been filled in!"
        Cancel = True
    End If
End Sub

Leave a comment

Your email address will not be published. Required fields are marked *

Format your code: <pre><code class="language-vba">place your code here</code></pre>