Microsoft Access Developer Center

Table Design

Query Design

Form Design

Form Tips and Mistakes

Module VBA to Forms and Controls

Form Navigation Caption

Using a RecordsetClone

Synchronize Two Subforms

Multiple OpenArgs Values

Late Bind Tab Subforms

Subform Reference to Control Rather than Field

Tab Page Reference

Shortcut Keys

Combo Box Top Tips

Properties and Validation

Select First Item

Cascading Combo Boxes

Zip, City, State AutoFill

Report Design

Suppressing Page Headers and Footers on the First Page of Your Report

Add the NoData Event

Annual Monthly Crosstab Columns

Design Environment

Adding Buttons to the Quick Access Toolbar

Collapsing the Office Ribbon for more space

VBA Programming

Basics: Forms and Controls

Using Nz() to Handle Nulls

Avoiding Exits in the Body of a Procedure

Shortcut Debugging Keys

Setting Module Options

Math Rounding Issues

Rename a File or Folder

Avoid DoEvents in Loops

Age Calculations

Weekday Math

Sending Emails with DoCmd.SendObject

Source Code Library

Microsoft Access Modules Library

Microsoft Access Modules

VBA Error Handling

Error Handling and Debugging Techniques

Error Number and Description Reference

Basic Error Handling

Pinpointing the Error Line

Performance Tips

Linked Database

Subdatasheet Name

Visual SourceSafe


Runtime Downloads

Simulating Runtime

Prevent Close Box

Disable Design Changes

Broken References

Remote Desktop Connection Setup

Terminal Services and RemoteApp Deployment

Reboot Remote Desktop

Missing Package & Deployment Wizard

Avoid Program Files Folder

Microsoft Access Front-End Deployment

System Admin

Disaster Recovery Plan

Compact Database

Compact on Close

Database Corruption

Class Not Registered Run-time Error -2147221164

Inconsistent Compile Error

Decompile Database

Bad DLL Calling Convention

Error 3045: Could Not Use

Converting ACCDB to MDB

SQL Server Upsizing

Microsoft Access to SQL Server Upsizing Center

Microsoft Access to SQL Server Upsizing Center

When and How to Upsize Access to SQL Server

SQL Server Express Versions and Downloads

Cloud and Azure

Cloud Implications

MS Access and SQL Azure

Deploying MS Access Linked to SQL Azure

Visual Studio LightSwitch

LightSwitch Introduction

Comparison Matrix

Additional Resources

Microsoft Access Help

MS Access Developer Programming

More Microsoft Access Tips

Technical Papers

Microsoft Access Tools

Connect with Us

Email NewsletterEmail Newsletter

FMS Development Team BlogDeveloper Team Blog

Facebook PageFacebook (Feed)

Twitter with FMSTwitter

FMS Support SiteSupport Forum


Selecting the First Item in a ComboBox or ListBox on a Microsoft Access Form

by FMS Development Team

Sample database: (36 KB)

The Problem

Combo boxes and list boxes are a great way to control user experience by limiting the values that a user can choose to a known list.

When working with ComboBoxes and ListBoxes, we often find the need to select the first item in the list by default. This can be done when the form loads, or with the contents of the ListBox or ComboBox are changed based on another selection (see our tip on Cascading ComboBoxes/ListBoxes).

The Solution

To select the first item, we use the following syntax to set the value of the control:

  Me.ControlName = Me.ControlName.ItemData(0)

Our example database contains a form with a ComboBox containing ProductCategoties, and a ListBox containing Products.

Select the first item in a Microsoft Access combo box

When we load the form, we want to select the first Category in the list.

Private Sub Form_Load()
  ' When the form loads, select the first item in the Category ComboBox
  Me.cboCategoryName = Me.cboCategoryName.ItemData(0)

  ' Call the code that updates the Products ListBox based on the selected category

End Sub

When we change the Category, we want to update the Products list, and select the first Product in the list:

Private Sub cboCategoryName_AfterUpdate()
  ' Call the code that updates the Products ListBox based on the selected category
  Me.lstProducts.RowSource = "SELECT ProductName " & _  
    "FROM products " & _
    "WHERE CategoryID = " & Nz(Me.cboCategoryName)

  ' Re-load the list box

  ' Select the first Product in the list box
  Me.lstProducts = Me.lstProducts.ItemData(0)

End Sub

After updating the RowSource property, use the list box's Requery method to re-load the data in the ListBox.

RecordSource versus RowSource

There is sometimes confusion between the terms RecordSource and RowSource. Both are properties that can contain a table, query, or SQL string.

  • The RecordSource property is a form or report property to populate the data that Microsoft Access displays for that object.
  • The RowSource property is at the ComboBox or ListBox control level that tells Microsoft Access what data to display for the control. It is independent of the data specified by the object's RecordSource.

Resources for Microsoft Access Forms, Combo Boxes and Tabs