How to Run a Macro in Excel (Run a VBA Code)

Last Updated: June 22, 2023
puneet-gogia-excel-champs

- Written by Puneet

Written by Puneet for Excel 2007, Excel 2010, Excel 2013, Excel 2016, Excel 2019, Excel for Mac

1. Run a Macro from the List

From the Developer Tab, you can access the list of the MACROS, which you have in your workbook or in PERSONAL.XLSB. To run a macro in Excel, you can use the below steps:

  1. Click on the macro button from the “Developer Tab” and open the list of macros.
    run-a-macro-from-the-list
  2. In this list of MACROS, you will have all the macro you have in the open workbooks, including the Personal Macro Workbook.
    personal-macro-workbook
  3. Just select the macro you want to run and click on the “RUN” button.

When you click on the run button, it executes the macro and closes the dialog box.

2. Run a Macro with a Shortcut Key

You can also run a macro using a keyboard shortcut key. Usually, when you record a macro, it asks you to define a shortcut key that you can use to run that macro.

run-a-macro-with-a-shortcut-key

And if you are writing a macro, you can define a shortcut key from the list of macros.

  1. Select the name of the macro for which you want to define the shortcut key and click on the options.
    select-the-name-of-the-macro
  2. After that, click within the input box and press the shortcut key that you want to define.
    click-in-the-input-box

3. Add a Macro Button to Quick Access Toolbar

You can also add a button to the Quick Access Toolbar to run a macro. You can use the below steps:

  1. First, click on the small dropdown that you have on the quick access toolbar and select more commands, and it will take you to the actual options to customize the quick access toolbar.
    add-a-macro-button-to-quick-access-toolbar
  2. Now from here, select the macros from the truth command from and select the macro that you want to add, after that click on the add button and it will add that macro to do quick access toolbar.
    customize-the-quick-access-toolbar
  3. In the end, click, OK.

And you will have a button for the macro that you have added.

button-for-the-macro

4. Add Macro to a Shape

Let’s say you have a VBA code which you need to use frequently in your work. In this situation, you can create a button and assign that macro to it.

  1. First, insert a simple shape from Insert Tab ➜ Illustrations ➜ Shapes. Select any of the shapes which you want to use as a button.
    add-macro-to-a-shape
  2. After that, right-click on that shape and select “Assign Macro”.
    right-click-on-that-shape
  3. Now from the list of macros, select the macro which you want to assign to the shape.
    list-of-macros

Now, whenever you click on that shape, the macro which you assigned will execute.

5. Assign a Macro to a Form Control Button

Apart from using a shape, you can also use a control button to run a macro.

  1. First, go to the Developer tab and in the controls group and then click on insert. And from the insert drop-down, click on the button to insert it.
    assign-a-macro-to-a-form-control-button
  2. After that, it will show you the macros list from where you can select it.
    assign-macro-dialog-box
  3. Once you select the macro and click OK, you will get a button in the worksheet (you can change the text of the button to give it a meaningful name).
    click-ok-you-will-get-a-button

6. Opening and Closing a Workbook

You can also make a macro to run while opening and closing a workbook. That means when you open or close a workbook, the macro you have assigned will get executed. For this, you need to use “auto_open” and “auto_close”.

Let’s suppose you want to assign a macro to run while opening the workbook. You need to use auto_open as the name of that macro.

Sub auto_open()
Range("A1").Value = Now
End Sub
opening-and-closing-a-workbook

Now, this micro will run when you open the workbook and enter the current date, and type in the cell A1 of the active sheet.

In the same way, you can also use “auto_close” to make this macro while closing the workbook.

7. Activating and Deactivating a Worksheet

Just like the workbook can also run a macro on activating and deactivating a worksheet. And in this case, you need to add that macro into the code window of that worksheet.

  1. First, right-click on the worksheet tab and click on the “view code”.
    activating-and-deactivating-a-worksheet
  2. Now in the code window, select the worksheet from the left drop-down. The moment you chose deactivate; you’ll get a new sub with the name “Worksheet_Deactivate”.
    select-the-worksheet-from-the-left-dropdown
  3. Now you need to add the code in this procedure that you want to run when you deactivate the worksheet.
Private Sub Worksheet_Deactivate()
Range(“A1”).Value = Now
End Sub

And if you want to run a macro when you activate a worksheet, select activate instead of deactivated from the drop-down.

select-activate-instead-of-deactivated
Private Sub Worksheet_Activate()
Range(“A1”).Value = Now
End Sub

8. Run a Macro When a Change in the Worksheet

You can also run a macro when you make changes to a worksheet. For example, when you enter a value in a cell or delete a value from a cell.

For this, you, again, need to enter the good in the code window of the worksheet and select “Selection Change” from the drop-down.

run-a-macro-when-a-change-in-worksheet
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range(“A1”).Value = “Last Updated: ” & Format(Now, “dd-mmm-yy hh:mm:ss Am/pm”)
End Sub

9. Within Another Procedure

You can run a macro from another procedure by using the call statement. Use the keyword Call and then the name of the macro.

within-another-procedure
Sub myStrikeThrough()
If Selection.Value = “Yes” Then
Selection.Value = “No”
Else
Selection.Value = “Yes”
End If
End Sub

Sub markDone()
Call myStrikeThrough
Selection.Font.Bold = True
End Sub

When you run “markDone” macro, it first runs “mystrikethrough” macro and then makes the selection font bold.

10. Schedule a Macro

You can also schedule a macro to run at a specific time. Let’s suppose you want to run a macro in the morning at 8:30, you can specify the time, and we will run it.

For this, you need to use an Application.OnTime method. Let’s suppose you have a macro “myCode”, you can write the code like the below to run it at 8:30 AM.

Application.OnTime TimeValue("08:30:00"), "myCode"

Leave a Comment