How to populate textbox based on combobox selection on UserForm in Excel?
Supposing you have a table contains a Name and a Staff number column as below screenshot shown. Now you need to create a Userform embedded with a combo box which collecting all names inside and a text box which will populate corresponding staff number when selecting name from the combo box. The method in this article can help you to get it down.
Populate textbox based on combobox selection on Userform with VBA
Please do as follows to populate textbox with corresponding value based on combobox selection on Userform.
1. Press the Alt + F11 keys to open the Microsoft Visual Basic for Applications window.
2. In the Microsoft Visual Basic for Applications window, click Insert > Userform. See screenshot:
3. Then insert a Combo box control and a Text box control into the created Userform as below screenshot shown.
4. Right-click on any blank space of the Userform, and then click View Code from the context menu. See screenshot:
5. In the opening Userform (Code) window, please copy and paste the below VBA code to replace the original.
VBA code: Populate textbox based on combobox selection on Userform
Dim xRg As Range
'Updated by Extendoffice 2018/1/30
Private Sub UserForm_Initialize()
Set xRg = Worksheets("Sheet5").Range("A2:B8")
Me.ComboBox1.List = xRg.Columns(1).Value
Private Sub ComboBox1_Change()
Me.TextBox1.Text = Application.WorksheetFunction.VLookup(Me.ComboBox1.Value, xRg, 2, False)
Note: In the code, A2:B2 is the range contains the values you will populate separately in both the Userform combo box and text box. And Sheet5 is the name of the worksheet contains the data range. Please change them as you need.
6. Press the Alt + Q keys to exit the Microsoft Visual Basic for Applications window.
7. Click Developer > Insert > Command Button (ActiveX Control) to insert a command button into the worksheet.
8. Right-click the sheet tab and select View Code from the right-clicking menu. Then copy and paste VBA code into the code window.
VBA code: Show userform
Private Sub CommandButton1_Click()
'Updated by Extendoffice 2018/1/30
9. Turn off the Design Mode in the workbook.
Click the command button to open the specified userform. Then you can see all names are collected in the combo box. When selecting a name from the combo box, the corresponding staff number will be populated into the textbox automatically as below screenshot shown.
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.
The method is very simple and populates the combo box quite efficiently. However, when I try populating the text box, I get a run-time error '1004': Unable to get the VLookup property of the WorksheetFunction class. Kindly assist with resolving this error.
I just tried this code and was running into the same issue. I realized I had the xRg variable inside the UserForm block, so it was not being accessed by my ComboBox function. Maybe others are running into the same issue
I have tried the code in Office 2010 32 bit, but no errors occured.
Please make sure the sheet name and cell range in the first VBA code are the same with your actual sheet name and range.
Thanks for your comment.