Microsoft Access Macros: A Beginner's Complete Guide
Learn how to automate repetitive tasks in Microsoft Access using macros — no VBA coding required. Step-by-step guide for beginners.
One of the most powerful — and most underused — features in Microsoft Access is the macro system. Macros let you automate repetitive tasks, respond to user actions, and build polished applications without writing a single line of VBA code. If you have been doing the same sequence of clicks every day, a macro can do it for you in milliseconds.
What Is a Macro in Access?
A macro in Access is a saved sequence of actions. You define the actions once, and Access executes them whenever you trigger the macro — by clicking a button, opening a form, or any number of other events.
Unlike VBA (Visual Basic for Applications), macros are built using a visual designer. You pick actions from a dropdown list, fill in the arguments, and you are done. No syntax errors, no compiler, no debugging sessions at midnight.
The Macro Designer
To open the Macro Designer, go to the Create tab on the ribbon and click Macro. You will see a blank design surface with an "Add New Action" dropdown.
The designer shows your macro as a list of actions, each with its own arguments panel below it. You can add, remove, reorder, and group actions visually.
Essential Macro Actions
Here are the actions you will use most often:
OpenForm
Opens a form. Arguments let you specify which form, which view (Form, Datasheet, Design), and a filter condition to show only certain records.
OpenReport
Opens a report in Print Preview, Report View, or sends it directly to the printer.
GoToRecord
Moves to the first, last, next, previous, or a specific record in the current form or datasheet.
FindRecord
Searches for a record matching criteria you specify — like a built-in search function for your form.
SetValue
Sets the value of a field, control, or property. Use this to pre-fill fields, reset controls, or change a form's caption dynamically.
RunSQL
Executes a SQL statement — an INSERT, UPDATE, or DELETE query — directly from a macro. This is powerful for bulk data operations triggered by a button click.
MsgBox
Displays a message box with a custom message. Great for confirmations, warnings, or status updates.
CloseWindow
Closes the current window or a named object.
QuitAccess
Closes the entire Access application. Useful for a "Exit" button on a main menu form.
Conditional Logic in Macros
Macros are not just linear sequences. You can add If/Else If/Else blocks to make decisions based on conditions.
For example, you might check whether a required field is empty before saving a record:
If [Forms]![CustomerForm]![CustomerName] = "" Then
MsgBox "Please enter a customer name before saving."
CancelEvent
End If
To add a condition, click the If block in the Add New Action dropdown. Type your condition expression in the If box, then add the actions to execute when the condition is true.
Submacros: Organizing Multiple Macros
Instead of creating dozens of separate macro objects, you can store multiple related macros inside a single macro object using Submacros. Each submacro has a name, and you call it using the syntax MacroName.SubmacroName.
This keeps your Navigation Pane tidy and makes it easy to find related automation logic.
Attaching Macros to Events
The real power of macros comes from attaching them to form and control events. Every form, button, text box, and combo box in Access has a list of events — things that happen to it — and you can run a macro in response to any of them.
Common events:
- On Click — runs when the user clicks a button
- On Open — runs when a form opens
- On Close — runs when a form closes
- Before Update — runs before a record is saved (great for validation)
- After Update — runs after a field value changes
To attach a macro to an event, open the form in Design View, select the control, open the Property Sheet (F4), click the Event tab, and click the builder button (...) next to the event you want.
A Practical Example: A Navigation Button
Here is a complete example. You want a button on your main menu that opens the Customers form filtered to show only active customers.
- Open the Macro Designer
- Add the OpenForm action
- Set Form Name to
Customers - Set Where Condition to
[Status]="Active" - Save the macro as
OpenActiveCustomers - On your main menu form, add a button
- Set the button's On Click event to
OpenActiveCustomers
Now clicking that button opens the Customers form showing only active records. No code required.
When to Use Macros vs. VBA
Macros are great for:
- Simple navigation and form-opening tasks
- Basic validation with MsgBox
- Automating common sequences of actions
- Situations where you want maintainability without code
VBA is better for:
- Complex logic with loops and variables
- Error handling
- Interacting with other Office applications
- Anything that requires more than a few conditions
Many experienced Access developers use macros for event handling and VBA for the heavy lifting. The two work together seamlessly.
Conclusion
Access macros are a genuinely useful tool that too many users overlook. If you are performing the same sequence of actions repeatedly, or if you want to add buttons and navigation to your database without diving into VBA, macros are the right starting point. Build a few simple ones, attach them to buttons, and you will quickly see how much smoother your database workflow can become.
Explore Topics
Written by
MS Access Blog
Content creator and writer sharing insights and stories.