Building a Professional Main Menu in Microsoft Access
A well-designed main menu transforms a collection of database objects into a polished application. Learn how to build one using Navigation Forms and custom forms.
The difference between a database and an application is often just a good main menu. When users open your database and see a clean, organized menu instead of the raw Navigation Pane, the whole experience feels professional and intentional. Access gives you two main approaches: the built-in Navigation Form and a custom-built form.
Why You Need a Main Menu
Without a main menu, users are exposed to the Navigation Pane — a developer's view of the database that shows every table, query, form, and report. Most users do not need to see this, and many should not. A main menu:
- Guides users to the right forms and reports
- Hides complexity they do not need
- Prevents accidental access to tables and design views
- Makes the database feel like a finished product
Option 1: The Navigation Form
Access 2010 and later includes a built-in Navigation Form — a tabbed interface that lets you embed other forms and reports directly within it.
Creating a Navigation Form:
- Go to Create → Navigation and choose a layout (Horizontal Tabs, Vertical Tabs Left, etc.)
- Access creates a blank Navigation Form with a "Add New" tab
- Drag forms and reports from the Navigation Pane onto the tab bar
- Each dragged object becomes a tab; clicking it opens that object within the Navigation Form
Customizing the Navigation Form:
- Rename tabs by double-clicking them
- Reorder tabs by dragging
- Add a logo or title in the form header
- Change tab colors and fonts in the form's property sheet
The Navigation Form is quick to set up and works well for simple applications with a flat structure.
Option 2: A Custom Main Menu Form
For more control — custom buttons, a logo, a welcome message, user-specific menus — build a custom form from scratch.
Basic structure:
- Create a new blank form (Create → Blank Form)
- Switch to Design View
- Set the form properties:
- Record Source: (blank — no data source)
- Scroll Bars: Neither
- Record Selectors: No
- Navigation Buttons: No
- Border Style: Dialog (for a fixed-size window)
- Add a title label, your logo, and command buttons for each major function
- Set each button's On Click event to open the appropriate form or report
Sample button code:
' Open the Customers form
Private Sub btnCustomers_Click()
DoCmd.OpenForm "frmCustomers"
End Sub
' Open the Orders report in Print Preview
Private Sub btnOrdersReport_Click()
DoCmd.OpenReport "rptOrders", acViewPreview
End Sub
' Exit the application
Private Sub btnExit_Click()
If MsgBox("Exit the application?", vbYesNo + vbQuestion) = vbYes Then
DoCmd.Quit
End If
End Sub
Organizing with Categories
For databases with many functions, organize buttons into logical groups with section labels:
- Data Entry: Customers, Orders, Products
- Reports: Monthly Summary, Customer Statements, Inventory
- Administration: User Management, Settings, Backup
Use separator lines (drawn with the Line control) and bold label headers to visually separate sections.
Setting the Startup Form
Once your main menu is built, set it to open automatically when the database opens:
- Go to File → Options → Current Database
- Set Display Form to your main menu form
- Uncheck Display Navigation Pane to hide the object list from users
- Click OK and reopen the database to test
Hiding the Navigation Pane Programmatically
For extra control, hide the Navigation Pane in the form's On Open event:
Private Sub Form_Open(Cancel As Integer)
DoCmd.NavigateTo "acNavigationCategoryObjectType"
DoCmd.RunCommand acCmdWindowHide
' Or use the API approach for more reliable hiding:
Application.SetOption "Show Hidden Objects", False
End Sub
Adding User-Specific Menus
If your database has a login system, show different buttons based on the logged-in user's role:
Private Sub Form_Open(Cancel As Integer)
' Show admin buttons only for admin users
Me.btnUserManagement.Visible = (CurrentUser() = "Admin")
Me.btnSettings.Visible = (CurrentUser() = "Admin")
End Sub
Conclusion
A main menu is the finishing touch that transforms a working database into a polished application. Whether you use the built-in Navigation Form for simplicity or build a custom form for full control, the investment pays off immediately in user experience and professionalism. Pair it with the startup options to hide the Navigation Pane, and your users will never need to see the raw database structure.
Explore Topics
Written by
MS Access Blog
Content creator and writer sharing insights and stories.