How to Record a Macro in Excel – A Step by Step Guide

Even if you're a complete newbie to the world of Excel VBA, you can easily record a macro and automate some of your work.

In this detailed guide, I will cover all that you need to know to get started with recording and using macros in Excel.

If you're interested in learning VBA the easy way, check out my Online Excel VBA Training.

What is a Macro?

If you're a newbie to VBA, let me first tell you what a macro is – after all, I will keep using this term in the entire tutorial.

A macro is a code written in VBA (Visual Basic for Applications) that allows you to run a chunk of code whenever it is executed.

Often, you will find people (including myself) refer to a VBA code as a macro – whether it's generated by using a macro recorder or has been written manually.

When you record a macro, Excel closely watches the steps you're taking and notes it down in a language that it understands – which is VBA.

And since Excel is a really good note taker, it creates a very detailed code (as we will see later in this tutorial).

Now, when you stop the recording, save the macro, and run it, Excel simply goes back to the VBA code it generated and follows the exact same steps.

This means that even if you know nothing about VBA, you can automate some tasks just by letting Excel record your steps once and then reuse these later.

Now let's dive in and see how to record a macro in Excel.

Getting the Developer Tab in the Ribbon

The first step to record a macro is to get the Developer tab in the ribbon.

If you can already see the developer tab in the ribbon, go to the next section, else follow the below steps:

  • Right-click on any of the existing tabs in the ribbon and click on ‘Customize the Ribbon' option. It will open the Excel Options dialogue box.Customize the ribbon in Excel
  • In the Excel Options dialogue box, you will have the Customize the Ribbon options. On the right, within the Main Tabs pane, check the Developer option.Record a Macro in Excel - Enable Developer tab
  • Click OK.

The above steps would make the Developer tab available in the ribbon area.

Developer tab in the ribbon

Recording a Macro in Excel

Now that we have everything in place, let's learn how to record a macro in Excel.

Let's record a very simple macro – one that selects a cell and enters the text ‘Excel' in it. I am using the text ‘Excel' while recording this macro, but feel free to enter your name or any other text that you like.

Here are the steps to record this macro:

  1. Click the Developer tab.
  2. In the Code group, click on the Macro button. This will open the ‘Record Macro' dialog box.Record Macro button in the developer tab in ribbon
  3. In the Record Macro dialog box, enter a name for your macro. I am using the name EnterText. There are some naming conditions that you need to follow when naming a macro. For example, you can not use spaces in between. I usually prefer to keep my macro names as a single word, with different parts with a capitalized first alphabet. You can also use underscore to separate two words – such as Enter_Text.Macro Name in the dialog box
  4. (Optional Step) You can assign a keyboard shortcut if you want. In this case, we will use the shortcut Control + Shift + N. Remember that the shortcut you assign here would override any existing shorcuts in your workbook. For example, if you assign the shortcut Control + S, you will not be able to use this for saving the workbook (instead, everytime you use it, it will execute the macro).Record a Macro in Excel - assigning a shortcut in dialog box
  5. In the ‘Store macro in' option, make sure ‘This Workbook' is selected. This step ensures that the macro is a part of the workbook. It will be there when you save it and reopen again, or even if you share it with someone.Record a Macro in Excel - Store Macro in This workbook
  6. (Optional Step) Enter a description. I usually don't do this, but if you're extremely organized, you may want to add what the macro is about.
  7. Click OK. As soon as you click OK, it starts to record your actions in Excel. You can see the ‘Stop recording' button in the Developer tab, which indicates that the macro recording is in progress.
  8. Select cell A2.
  9. Enter the text Excel (or you can use your name).
  10. Hit the Enter key. This will select cell A3.
  11. Click on the Stop Recording button the Developer tab.Record a Macro in Excel - Stop Recording Button

Congratulations!

You have just recorded your first macro in Excel. You're no longer a macro virgin.

While the macro doesn't do anything useful, it'll serve its purpose in explaining how a macro recorder works in Excel.

Now let's go ahead and test this macro.

Follow the steps below to test the macro:

  1. Delete the text in cell A2. This is to test if the macro inserts the text in cell A2 or not.
  2. Select any cell – other than A2. This is to test whether the macro selects cell A2 or not.
  3. Click the Developer tab.
  4. In the Code group, click the Macros button.
  5. In the Macro dialog box, click on the macro Name – EnterText.
  6. Click the Run button.Record a Macro in Excel - run the EnterText macro in Excel

You will notice that as soon as you click the Run button, the text ‘Excel' gets inserted into cell A2 and cell A3 gets selected.

Now, this may all happen in a split second, but in reality, the macro  – just like an obedient elf – followed the exact steps you showed it while recording the macro.

So the macro first selects the cell A2, then enters the text Excel in it, and then selects the cell A3.

Note: You can also run the macro using the keyboard shortcut Control + Shift + N (hold the Control and the Shift keys and then press the N key). This is the same keyboard shortcut that we assigned to the macro when recording it.

What Recording a Macro does in the Backend

Now let's go to the Excel backend – the VB Editor – and see what recording a macro really does.

Here are the steps to open the VB Editor in Excel:

  1. Click the Developer tab.
  2. In the Code group, click the Visual Basic button.Record a Macro in Excel - visual basic button in ribbon

Or you can use the keyboard shortcut – ALT + F11 (hold the ALT key and press F11), instead of the above two steps. This shortcut also opens the same VB Editor.

Now if you're seeing the VB Editor for the first time, don't be overwhelmed.

Let me quickly make you familiar with the VB Editor anatomy.

Record a Macro in Excel - Vb Editor Anatomy

  • Menu Bar: This is where you have all the options of VB Editor. Consider this as the ribbon of VBA. It contains commands that you can use while working with the VB Editor.
  • Toolbar – This is like the Quick Access Toolbar of the VB editor. It comes with some useful options, and you can add more options to it. Its benefit is that an option in the toolbar is just a click away.
  • Project Explorer Window – This is where Excel lists all the workbooks and all the objects in each workbook. For example, if we have a workbook with 3 worksheets, it would show up in the Project Explorer. There are some additional objects here such as modules, user forms, and class modules.
  • Code Window – This is where the VBA code is recorded or written. There is a code window for each object listed in the Project explorer – such as worksheets, workbooks, modules, etc. We will see later in this tutorial that the recorded macro goes into the code window of a module.
  • Properties Window – You can see the properties of each object in this window. I often use this window to name objects or change the hidden properties. You may not see this window when you open the VB editor. To show this, click the view tab and select Properties Window.
  • Immediate Window – I rarely use this window. It's useful when you want to test some statements or while debugging. It may not be visible by default and you can make it appear by clicking the View tab and selecting the Immediate Window option.

When we recorded the macro – EnterText, the following things happened in the VB Editor:

  • A new module was inserted.
  • A macro was recorded with the name that we specified – EnterText
  • The code was written in the code window of the module.

So if you double-click on the module (Module 1 in this case), a code window as shown below would appear.

Macro Code in the Module for EnterText

 

Here is the code that the macro recorder and given us:

Sub EnterText()
'
' EnterText Macro
'
' Keyboard Shortcut: Ctrl+Shift+N
'
Range("A2").Select
ActiveCell.FormulaR1C1 = "Excel"
Range("A3").Select
End Sub

In VBA, any line that follows the (apostrophe sign) is not executed. It's a comment that's placed for information purpose only. If you remove the first five lines of this code, the macro will still work as expected.

Now let me quickly cover what each line of code does:

The code starts with Sub followed by the name of the macro and empty parenthesis. Sub is short for Subroutine. Every subroutine (also called Procedure) in VBA starts with Sub and ends with End Sub.

  • Range(“A2”).Select – This line selects the cell A2.
  • ActiveCell.FormulaR1C1 = “Excel” – this line enters the text Excel in the active cell. Since we selected A2 as the first step, it becomes our active cell.
  • Range(“A3”).Select – This selects cell A3. This happens as we hit the Enter key after entering the text, result of which was to select cell A3.

I hope by now you have some basic understanding of how to record a macro in Excel.

Keep in mind that the code written by a macro recorder is by no means an efficient code.

Macro recorder sometimes adds a lot of fluff to the code which is not necessary at times. But this does not mean that it's not useful. For someone learning VBA, a macro recorder can be a great way to analyze how things work in VBA.

Absolute Vs Relative Macro Recording

You already know about absolute and relative references in Excel.. right?

If you don't – read this tutorial on references first.

Read it? Let's move on.

We will see later in this section on how to record macros in absolute and relative references. But before that, let me quickly summarise the difference between absolute and relative reference in VBA (in case you got lazy and didn't read up on the link I gave a few lines ago):

If you use an absolute reference option to record a macro, the VBA code would always refer to the same cells that you used. For example, if you select cell A2, enter the text Excel and press Enter, every time – no matter where you are in the worksheet and no matter which cell is selected, your code would first select cell A2, enter the text Excel, and then move to cell A3.

If you use a relative reference option to record a macro, VBA wouldn't hardcode the cell references. Rather, it would focus on the movement when compared with the active cell. For example, suppose you already have cell A1 selected, and you start recording the macro in the relative reference mode. Now you select cell A2, enter the text Excel, and hit the enter key. Now, when you run this macro, it will not go back to cell A2, instead, it will move relative to the active cell. For example, if cell K3 is selected, it will move to K4, enter the text Excel, and then finally select cell K5.

Now let me tell you how to record a macro in relative references mode:

  1. Select cell A1.
  2. Click the Developer tab.
  3. In the Code group, click on the ‘Use Relative References' button. It will turn green, indicating that it's turned on.Record a Macro in Excel - Use Relative References Button
  4. Click the Record Macro button.Click the Record Macro button in the developer tab
  5. In the Record Macro dialog box, enter a name for your macro. I am using the name EnterTextRelRef.Record a Macro in Excel - relative reference macro name enterText
  6. In the Store macro in option, make sure ‘This Workbook' is selected.
  7. Click OK.
  8. Select cell A2.
  9. Enter the text Excel (or you can enter your name).
  10. Hit the Enter key. This will take the cursor to the cell A3.
  11. Click on the Stop Recording button the Developer tab.

This would record the macro in the relative reference mode.

Now do this.

  1. Select any cell (other than A1).
  2. Click the Developer tab.
  3. In the Code group, click the Macros button.
  4. In the Macro dialog box, click on the macro Name – EnterTextRelRef.
  5. Click the Run button.

What happens? Did the cursor go back to cell A3.

It wouldn't – because you have recorded the macro in the relative reference mode. So the cursor would move relative to the active cell. For example, if you do this when cell K3 is selected, it will enter the text Excel is cell K4 and end up selecting cell K5.

Here is the code that gets recorded in the backend (VB Editor module code window):

VBA macro code for relative reference

Sub EnterTextRelRef()
'
' EnterTextRelRef Macro
'
'
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "Excel"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

Note that this entire code doesn't refer to the cells K3 or K4 anywhere. Instead, it uses the Activecell to refer to the selected cell and Offset to move relative to the active cell.

Don't worry about Range(“A1”) part that the code has. It is one of those unnecessary codes that the macro recorder adds that serves no purpose and can be removed. The code would work just fine without it.

‘Use Reative Reference' button in the Developer tab is a toggle button. You can turn it off (and switch back to absolute reference) by clicking it.

What a Macro Recorder Cannot Do

Macro recorder is great at following you in Excel and recording your exact steps, but it may fail you when you need it to do more.

  • You can't execute a code without selecting the object. If you want the macro recorder to go to the next worksheet and highlight all the filled cells in column A, without leaving the current worksheet, then it won't be able to do this. It's because if I ask you to do this, even you won't be able to do that (without leaving the current sheet). And if you can't do it yourself, how will the macro recorder capture your actions. In such cases, you need to manually go and create/edit the code.
  • You can't create a custom function with a macro recorder. With VBA, you can create custom functions that you can use in the worksheet as regular functions. You can create this by writing the code manually.
  • You can't run codes based on Events: In VBA you can use many events – such as opening a workbook, adding a worksheet, double-clicking on a cell, etc, to run a code associated with that event. You can use a macro recorder to do this.
  • You can't create loops with a macro recorder. When you manually enter the code, you can leverage the power of loops in VBA (such as For Next, For Each Next, Do While, Do until). But you can't do this when you record a macro.
  • You can't analyze conditions: You can check for conditions within the code using macro recorder. If you write a VBA code manually, you can use the IF Then Else statements to analyze a condition and run a code if true (or another code if false).
  • You can't pass arguments in a macro procedure: When you record a macro, it will never have any arguments. A subroutine can take input arguments that can be used within the macro to perform a task. While recording a macro, this can not be done as the recorded macros are independent and are not connected to any other existing macros.

Macro-Enabled File Extensions

When you record a macro, or you manually write VBA code in Excel, you need to save the file with a macro-enabled file extension (.xlsm).

Before Excel 2007, there was one single file format that used to suffice – .xls.

But from 2007 onwards, .xlsx was introduced as the standard file extension. The files that are saved as .xlsx cannot hold a macro in it. So if you have a file with .xlsx extension and you record/write a macro and save it, it will warn you to save it in macro-enabled format, and show you a dialog (as shown below):

Record a Macro in Excel - error in xlsx files

If you select No, Excel allows you to save it in a macro-enabled format. But if you click Yes, Excel will automatically remove all the code from your workbook and save it as a .xlsx workbook.

So if you have a macro in your workbook, you need to save it in the .xlsm format to keep that macro.

Different Ways to run a Macro in Excel

So far, we have seen only one way to run a macro in Excel – which is using the Macro dialog box.

But there are a number of ways you can run macros.

  1. Run a Macro from the Ribbon (Developer Tab)
  2. Using a keyboard shortcut (which you have to assign)
  3. Assign the Macro to a Shape
  4. Assign the Macro to a Button
  5. Run a Macro from the VB Editor

Conclusion – Record a Macro when Stuck

I already mentioned that a macro recorder is a useful tool for anybody working with VBA in Excel.

As you use the macro recorder a few times, you will notice that it spits out a lot of unnecessary code. However, it's still useful and gives you some ideas on where to start. For example, if I ask you to filter a column of cells using VBA, and you have no idea what the syntax is, you can quickly record a macro and check out the code.

A macro recorder is an indispensable tool and even after years of VBA coding experience under my belt, I often resort to the macro recorder for help.

You May Also like the Following Excel Tutorials: