Learn

Macro 3: Saving a Workbook Before Closing

Macro 3: Saving a Workbook Before Closing

This macro is an excellent way to protect users from inadvertently closing their file before saving. When

implemented, this macro ensures that Excel automatically saves before closing the workbook.

How it works

This code is triggered by the workbook’s BeforeClose event. When you try to close the workbook,

this event fires, running the code within. The crux of the code is simple — it asks the user whether he

really wants to close the workbook (see Figure 2-2). The macro then evaluates whether the user

clicked OK or Cancel.

Figure 2-2: A message box activates when you attempt to close the workbook.

The evaluation is done with a Select Case statement. The Select Case statement is an alter-

native to the If…Then…Else statement, allowing you to perform condition checks in your macros.

The basic construct of a Select Case statement is simple.

Select Case <some expression to check>

Case Is = <some value>

<do something>

Case Is=<some other value>

<do something else>

Case Is=<some 3rd value>

<do some 3rd thing>

End Select

With a Select Case statement, you can perform many conditional checks. In this case, we are

simply checking for OK or Cancel. Take a look at the code.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

‘Step 1: Activate the message box and start the check

Select Case MsgBox(“Save and close?”, vbOKCancel)

‘Step 2: Cancel button pressed, cancel the close

Case Is = vbCancel

Cancel = True

‘Step 3: OK button pressed, save the workbook and close

Case Is = vbOK

ActiveWorkbook.Save

‘Step 4: Close your Select Case statement

End Select

End Sub

1. In Step 1, we activate the message box as the condition check for the Select Case state-

ment. Here, we use the vbOKCancel argument to ensure that the OK and Cancel buttons

are presented as choices.

2. If the user clicked Cancel in the message box, the macro tells Excel to cancel the Workbook_

Close event. This is done by passing True to the Cancel Boolean.

3. If the user clicked OK in the message box, Step 3 takes effect. Here, we tell Excel to save the

workbook. And because we did not set the Cancel Boolean to True, Excel continues with

the close.

4. In Step 4, we simply close out the Select Case statement. Every time you instantiate a

Select Case, you must close it out with a corresponding End Select.

How to use it

To implement this macro, you need to copy and paste it into the Workbook_BeforeClose event

code window. Placing the macro there allows it to run each time you try to close the workbook.

1. Activate the Visual Basic Editor by pressing ALT+F11 on your keyboard.

2. In the Project window, find your project/workbook name and click the plus sign next to it in

order to see all the sheets.

3. Click ThisWorkbook.

4. Select the BeforeClose event in the Event drop-down list (see Figure 2-3).

5. Type or paste the code in the newly created module.

Figure 2-3: Type or paste your code in the Workbook_BeforeClose event code window.

learn
We will be happy to hear your thoughts

Leave a reply

Share knowledge
Learn
Logo
Enable registration in settings - general