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

by FMS Development Team

Sample database: SelectFirstItemInList.zip (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.

By default, the value is blank but when you initialize or refresh a ComboBox or ListBox, you may want to select the first item in the list.

This can occur when the form loads, or if the RowSource values of the ListBox or ComboBox change based on another selection (see our tip on Cascading ComboBoxes/ListBoxes).

The Solution

To replace the blank value, use this syntax to set the value of the control to the first item (assumes Column Heads is set to No):

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

Our example database contains a form with a ComboBox containing ProductCategories, 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
  cboCategoryName_AfterUpdate

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
  Me.lstProducts.Requery

  ' 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.

Combo Box or List Box with Column Heads

If a combo box or list box has the Column Heads set to Yes, the first displayed row is the title of the column.

Column Head Property Set to Yes

In this case, the value of ItemData(0) is the name of the column since that's the first value in the list. To get the name of the first data value, choose element 1:

Me.ControlName = Me.ControlName.ItemData(1)

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

Table Design

Query Design

Form Design

Form Tips and Mistakes

Module VBA to Forms and Controls

Form Navigation Caption

Use 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

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

Add the NoData Event

Annual Monthly Crosstab Columns

Design Environment

Add Buttons to the Quick Access Toolbar

Collapse the Office Ribbon for more space

VBA Programming

Run VBA Code from a Macro

Basics: Forms and Controls

Use Nz() to Handle Nulls

Avoid Exits in the Body of a Procedure

Shortcut Debugging Keys

Set Module Options

Math Rounding Issues

Rename a File or Folder

Avoid DoEvents in Loops

Age Calculations

Weekday Math

Send 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

Deployment

Runtime Downloads

Simulate 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

Connect with Us

 

Free Product Catalog from FMS