Learn

Macro 2: Saving a Workbook

Macro 2: Saving a Workbook

When a Particular Cell Is

Changed

Sometimes, you may be working on data that is so sensitive that you’ll want to save every time a par-

ticular cell or range of cells is changed. This macro allows you to define the range of cells that, when

changed, forces the workbook to save.

How it works

The secret to this code is the Intersect method. Because we don’t want to save the worksheet

when any old cell changes, we use the Intersect method to determine if the target cell (the cell

that changed) intersects with the range we have specified to be the trigger range (C5:C16 in this

case).

The Intersect method returns one of two things: either a Range object that defines the intersec-

tion between the two given ranges, or nothing. So in essence, we need to throw the target cell

against the Intersect method to check for a value of Nothing. At that point, we can make the

decision whether to save the workbook.

Private Sub Worksheet_Change(ByVal Target As Range)

‘Step 1: Does the changed range intersect specified range?

If Intersect(Target, Range(“C5:C16”)) Is Nothing Then

‘Step 2: If there is no intersection, exit procedure

Exit Sub

‘Step 3: If there is an intersection, save the workbook

Else

ActiveWorkbook.Save

‘Close out the If statement

End If

End Sub

1. In Step 1, we are simply checking to see if the target cell (the cell that has changed) is in the

range specified by the Intersect method. A value of Nothing means the target cell falls

outside the range specified.

2. Step 2 forces the macro to stop and exit the procedure if there is no intersection between

the target cell and the specified range.

3. If there is an intersection, Step 3 fires the Save method of the active workbook, overwriting

the previous version.

4. In Step 4, we simply close out the If statement. Every time you instantiate an If…Then…

Else check, you must close it out with a corresponding End If.

How to use it

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

window. Placing the macro here allows it to run each time you make any change to the sheet.

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

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 in the sheet from which you want to trigger the code.

4. Select the Change event from the Event drop-down list (see Figure 2-1).

5. Type or paste the code in the newly created module, changing the range address to suit your

needs.

Figure 2-1: Enter or Paste your code in the Worksheet_Change event code window.

learn
We will be happy to hear your thoughts

Leave a reply

Share knowledge
Learn
Logo
Enable registration in settings - general