Recording Excel Macros with Relative References

By Michael Alexander

A relative reference in an Excel macro means relative to the currently active cell. So use caution with your active cell choice — both when you record the relative reference macro and when you run it.

First, open Sample File.xlsx available online. Then, use the following steps to record a relative reference macro:

  1. On the Developer tab, select the Use Relative References option.

    Recording a macro with relative ­references.

    Recording a macro with relative ­references.
  2. Make sure cell A1 is selected.

  3. On the Developer tab, select Record Macro.

  4. Name the macro AddTotalRelative.

  5. Choose This Workbook for the save location.

  6. Click OK to start recording.

  7. Select cell A16 and type Total in the cell.

  8. Select the first empty cell in Column D (D16) and type = COUNTA(D2:D15).

  9. On the Developer tab, click Stop Recording to stop recording the macro.

At this point, you’ve recorded two macros. Take a moment to examine the code for your newly created macro by selecting Macros on the Developer tab to open the Macro dialog box. Choose the AddTotalRelative macro and click Edit.

Again, Visual Basic Editor opens and shows you the code that was written when you recorded your macro. This time, your code looks something like the following:

Sub AddTotalRelative()
  ActiveCell.Offset(15, 0).Range("A1").Select
  ActiveCell.FormulaR1C1 = "Total"
  ActiveCell.Offset(0, 3).Range("A1").Select
  ActiveCell.FormulaR1C1 = "=COUNTA(R[-14]C:R[-1]C)"
End Sub

First note that the code does not contain references to specific cell ranges (other than the starting point, A1). Note that in this macro, Excel uses the Offset property of the active cell. This property tells the cursor to move a certain number of cells up or down and a certain number of cells left or right.

In this case, the Offset property code tells Excel to move 15 rows down and 0 columns across from the active cell (A1). Because the macro was recorded using relative reference, Excel will not explicitly select a particular cell as it did when recording an absolute reference macro.

To see this macro in action, delete the Total row for both tables and do the following:

  1. Select cell A1.

  2. On the Developer tab, select Macros.

  3. Find and select the AddTotalRelative macro.

  4. Click the Run button.

  5. Select cell F1.

  6. On the Developer tab, select Macros.

  7. Find and select the AddTotalRelative macro.

  8. Click the Run button.

Note that this macro, unlike your previous macro, works on both sets of data. Because the macro applies the totals relative to the currently active cell, the totals are applied correctly.

For this macro to work, you simply need to ensure that

  • You’ve selected the correct starting cell before running the macro.

  • The block of data has the same number of rows and columns as the data on which you recorded the macro.