Note: The other languages of the website are Google-translated. Back to English
English English

How to create dynamic cascading list boxes in Excel?

You may know how to create cascading validation drop down list in Excel. However, how to create dynamic cascading list boxes in Excel? This article introduces a VBA method to get it down.

Create dynamic cascading list boxes with VBA code

Office Tab Enable Tabbed Editing and Browsing in Office, and Make Your Work Much Easier...
Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%
  • Reuse Anything: Add the most used or complex formulas, charts and anything else to your favorites, and quickly reuse them in the future.
  • More than 20 text features: Extract Number from Text String; Extract or Remove Part of Texts; Convert Numbers and Currencies to English Words.
  • Merge Tools: Multiple Workbooks and Sheets into One; Merge Multiple Cells/Rows/Columns Without Losing Data; Merge Duplicate Rows and Sum.
  • Split Tools: Split Data into Multiple Sheets Based on Value; One Workbook to Multiple Excel, PDF or CSV Files; One Column to Multiple Columns.
  • Paste Skipping Hidden/Filtered Rows; Count And Sum by Background Color; Send Personalized Emails to Multiple Recipients in Bulk.
  • Super Filter: Create advanced filter schemes and apply to any sheets; Sort by week, day, frequency and more; Filter by bold, formulas, comment...
  • More than 300 powerful features; Works with Office 2007-2019 and 365; Supports all languages; Easy deploying in your enterprise or organization.

Create dynamic cascading list boxes with VBA code

As below screenshot shown, you need to create a parent list box contains the unique values of the Drink column, and display all the corresponding values in the second list box based on selection in parent list box. The following VBA code helps you to achieve it. Please do as follows.

1. Firstly, you need to extract all unique values from the Drink column. Select a blank cell, enter array formula =IFERROR(INDEX($A$2:$A$11, MATCH(0,COUNTIF($J$1:J1, $A$2:$A$11), 0)),"") into the Formula Bar, and then press the Ctrl + Shift + Enter key. Then drag the Fill Handle to get all unique values. See screenshot:

Note: In the formula, $A$2:$A$11 is the range you will extract unique values from. J1 is the cell above where your formula is located.

Tip: If formula is too hard to remember and handle, the Select Duplicate & Unique Cells utility of Kutools for Excel will be a good choice for you to quickly extract all unique values from a column.

Please select the column contains unique values you will extract from. Then enable the utility by clicking Kutools > Select > Select Duplicate & Unique Cells. In the Select Duplicate & Unique Cells dialog box, select the All unique (Including 1st duplicates) option and click the OK button. Then all unique values are selected in the column. Please copy and paste them to a new place. See screenshot:

Kutools for Excel: with more than 200 handy Excel add-ins, free to try with no limitation in 60 days. Download and free trial Now!

2. Insert two list boxes separately by clicking Developer > Insert > List Box (ActiveX Control). See screenshot:

3. Right click the parent list box and select Properties from the context menu. In the Properties dialog box, change the (Name) field to Drink or other name as you need, enter the cell range contains the extracted unique values into the ListFillRange field and close the dialog.

4. Repeat the step 3 to change the second list box’s (Name) field to Item in the Properties dialog box.

5. Right click the sheet tab and select View Code from the right clicking menu. Then copy below VBA code into the Code window. See screenshot:

VBA code: Create dynamic cascading list boxes in Excel

Dim xPreStr As String
Private Sub Drink_Click()
'Update by Extendoffice 2018/06/04
    Dim I, xRows As Long
    Dim xRg As Range
    Dim xRegStr As String
    Application.ScreenUpdating = False
    xRegStr = Me.Drink.Text
    Set xRg = Range("A2:A11")
    xRows = xRg.Rows.Count
    If xRegStr <> xPreStr Then
    Set xRg = xRg(1)
    For I = 1 To xRows
        If xRg.Offset(I - 1).Value = xRegStr Then
            Me.Item.AddItem xRg.Offset(I - 1, 1).Value
            'Me.OtherListBoxName.AddItem xRg.Offset(I - 1, 2).Value
        End If
    xPreStr = xRegStr
    End If
    Application.ScreenUpdating = True
End Sub

Notes: In the code Drink and Item are the names of two list boxes, change them to your own names.

6. Press the Alt + Q keys to close the Microsoft Visual Basic for Applications window.

7. Turn off the Design Mode by clicking Developer > Design Mode.

From now on, when selecting any kind of drink such as Coffee in the parent list box, all coffee items will be displayed in the second one. Select Tea or Wine will only display the tea or wine items in the second list box. See screenshot:

Related articles:

The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails...
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range...
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns... Prevent Duplicate Cells; Compare Ranges...
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select...
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more...
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments...
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic...
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF...
  • More than 300 powerful features. Supports Office/Excel 2007-2019 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.
kte tab 201905

Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!
officetab bottom
Comments (1)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site

What does "Me" refer to in the code and how will the code change if I have a MultiSelect list box?

There are no comments posted here yet
Leave your comments
Posting as Guest
Rate this post:
0   Characters
Suggested Locations