logo
search
VBA & Macro Problems

How to Create an Excel VBA Dropdown and Write Selection to Cell B1

Chanuka GeekiyanageChanuka Geekiyanage Oct 8, 2026 869 views

Question details

The user needs a VBA script to display a dropdown list of choices and write the user's selection directly into cell B1, completely avoiding the use of UserForms or workbook-specific named ranges so it functions across multiple workbooks.

How to Create an Excel VBA Dropdown and Write Selection to Cell B1
Product
Excel
Device & OS
not provided
Scenario
Deploying a macro across multiple different workbooks where users must select an option from a predefined list to populate cell B1.
Observed behavior
The user requires an in-cell dropdown generated by VBA, as standard Application.InputBox methods do not support standard dropdown lists, and cross-workbook compatibility makes named ranges unviable.
Before you start

Ensure that the Developer tab is enabled in your spreadsheet ribbon and that your workbook is saved as a Macro-Enabled Workbook (.xlsm) so your VBA code executes properly.

Solution 1Recommended

Use VBA to Apply Data Validation to Cell B1

The most efficient way to create an in-cell dropdown dynamically without a UserForm or named range is by using VBA to apply Data Validation with a hardcoded, comma-separated string.

Since the macro needs to work across multiple workbooks independently, referencing external named ranges will cause errors. Instead, the validation list can be generated locally in the active workbook using VBA's Validation.Add method.

This method avoids the complexity of UserForms and provides a native, user-friendly dropdown directly in the cell.

1
Open the VBA Editor

Press Alt + F11 to open the Visual Basic for Applications (VBA) Editor in your workbook.

2
Insert a New Module

Click on 'Insert' in the top menu and select 'Module' to create a blank workspace for your code.

3
Write the Validation Code

Enter the following code to clear existing rules and add a dropdown to cell B1: With Range("B1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Choice1,Choice2,Choice3" End With

4
Run the Macro

Press F5 or click the 'Run' button. Return to your worksheet, and cell B1 will now have a dropdown list containing 'Choice1', 'Choice2', and 'Choice3'.

Use VBA to Apply Data Validation to Cell B1
Accessing the Selected Value: Once the user selects a value from the B1 dropdown, your VBA code can easily retrieve it anytime using 'Range("B1").Value'.
Efficient Macro Support

Easily Run VBA Macros in WPS Office

WPS Office provides robust and seamless support for VBA and macros, allowing you to run your Excel VBA dropdown scripts without modifying your existing code.

  1. 1. Download and Install: Download WPS Office for free from the official website and complete the installation.
  2. 2. Open Your Workbook: Launch WPS Spreadsheet and open your existing Macro-Enabled Workbook (.xlsm).
  3. 3. Enable Macros and Run: Go to the Developer tab, ensure macros are enabled, and run your VBA script to instantly create your cell B1 dropdown.
Fully compatible with Microsoft Excel VBA syntax and objectsSeamlessly opens and runs .xlsm and .xlsb macro-enabled formatsBuilt-in Developer tab for easy macro editing and executionLightweight application with high performance for heavy datasets
QA img-9

Frequently Asked Questions

Why can't I use Application.InputBox to create a dropdown list?

Application.InputBox in VBA is designed strictly for receiving typed text, numbers, or range selections from the user. It does not have built-in parameters to display a standard dropdown list of predefined options. Data Validation or a UserForm is required for list selections.

Can I populate the VBA Data Validation list from a dynamic array?

Yes. If your choices are stored in a VBA array, you can use the VBA Join() function to convert the array into a comma-separated string (e.g., Join(myArray, ",")), and pass that string to the Formula1 property of the Validation.Add method.

How do I trigger another macro automatically when the dropdown selection in B1 changes?

You can utilize the Worksheet_Change event in the specific sheet's code module. Write an IF statement checking if Target.Address equals "$B$1". If true, execute your desired macro code based on the new Target.Value.

Is there a character limit for the comma-separated list in Data Validation via VBA?

Yes, when using a comma-separated string directly in the Formula1 property for Data Validation, there is a limit of 255 characters. If your list exceeds this limit, you must place the items on a hidden worksheet and reference that range instead.