Tips for solving problems with drop down lists, and workarounds for data validation limitations, such as small font, and narrow lists
When you try to create an Excel data validation dropdown list, and refer to a source list on a different worksheet, you may see an error message: "You may not use references to other worksheets or workbooks for Data Validation criteria."
To avoid this problem, name the list on the other worksheet, then refer to the named range, as described here: Excel Data Validation
If the list is in a different workbook, you can use the technique described here: Use a List from Another Workbook
Some lists change frequently, with items being added or removed. If the list is the source for a Data Validation dropdown, use a dynamic formula to name the range, and the dropdown list will be automatically updated.
For instructions, view this page: Create a Dynamic Range
There are limits to the number of items that will show in a data validation drop down list:
If you need more items than that, you could create a dependent drop down list, broken down by category. There is a sample file here: Dependent Drop Down from Sorted List
When you click the arrow to open a drop down list, the selection might go to a blank at the bottom of the list, instead of the first item in the list.
To download the sample file, click here: Remove Blanks With Dynamic Range Sample File
Why does this happen, and how can you prevent it? Also, if there are blanks in the source list, invalid entries might be allowed in the cells.
In the example shown above, the drop down list is based on a range named Products. The person who set up the list left a few blank cells at the end, where new items could be added.
If there's a blank cell in the source list, and the cell with the data validation list is blank, the list will open with the blank entry selected.
To prevent this, either enter a default value in the data validation cell, or remove the blanks from the source list.
Or, make " --Select--" the top item in the Product list, and set up the worksheet with " --Select--" entered in each product cell, as the default entry.
NOTE: Type a space or an apostrophe at the start of "--Select--" so Excel will not show you an error message.
So, in this example, you could change the Products list to a dynamic range, which will adjust automatically when items are added or removed.
The OFFSET formula used in this example is:
To see the steps for setting up a dynamic named range, please watch this short video tutorial.
The font size in a data validation list can't be changed, nor can its default list length, which has a maximum of eight rows.
If you reduce the zoom setting on a worksheet, it can be almost impossible to read the items in the dropdown list, as in the example below.
One workaround is to use programming, and a combo box from the Control Toolbox, to overlay the cell with data validation. If the user double-clicks on a data validation cell, the combobox appears, and they can choose from it. There are instructions here.
Unfortunately, you can't change the font in a data validation list, as you saw in the previous section. However, you can use symbol characters from the Tahoma font, such as arrows, circles, and squares.
To create a list of symbols:
To create a drop down list with the symbols:
To see the example, you can download the sample file: Data Validation List With Symbols
In Excel 2000 and later versions, selecting an item from a Data Validation dropdown list will trigger a Change event. This means that code can automatically run after a user selects an item from the list.
To see an example, go to the Sample Worksheets page, and under the Filters heading, find Product List by Category, and download the ProductsList.zip file.
In Excel 97, selecting an item from a Data Validation dropdown list does not trigger a Change event, unless the list items have been typed in the Data Validation dialog box. In this version, you can add a button to the worksheet, and run the code by clicking the button. To see an example, go to the Sample Worksheets page, and under the Filters heading, find Product List by Category, and download the ProductsList97.zip file.
Another option in Excel 97 is to use the Calculate event to run the code. To do this, refer to the cell with data validation in a formula on the worksheet, e.g. =MATCH(C3,CategoryList,0). Then, add the filter code to the worksheet's Calculate event. To see an example, go to the Sample Worksheets page, and under the Filters heading, find Product List by Category, and download the ProductsList97Calc.zip file.
Occasionally, data validation dropdown arrows are not visible on the worksheet, in cells where you know that data validation lists have been created. The video shows the most common reasons for missing arrows, and the written instructions for fixing the problems are below the video.
In you have a linked picture in an Excel 2013 workbook, on Window 8, the data validation arrow might not appear in the active cell, unless you are pressing the mouse button.
As a workaround, follow these steps to make the arrow appear:
If you require visible arrows for all cells that contain lists, you can use combo boxes instead of data validation, and those arrows will be visible at all times. To create a combo box, choose View|Toolbars, and select either the Control Toolbox or the Forms toolbar.
If objects are hidden on the worksheet, the data validation dropdown arrows will also be hidden. To make objects visible, choose Tools|Options, and on the View tab, under Objects, select Show all.
In Excel 97, if a Data Validation dropdown list is in a frozen pane of the window, the dropdown arrow does not appear when the cell is selected. As a workaround, use Window|Split instead of Window|Freeze Panes
This problem has been corrected in later versions.
Without frozen panes
With frozen panes
If none of the above solutions explains the missing dropdown arrows, the worksheet may be corrupted. Try copying the data to a new worksheet or workbook, and the dropdown arrows may reappear.
Or, try to repair the file as you open it:
Although you have created data validation dropdown arrows on some cells, users may be able to type invalid entries. The following are the most common reasons for this.
To download the sample file, click here: Data Validation Invalid Entries Sample File
If the source list is a named range that contains blank cells, users may be able to type any entry, without receiving an error message. Watch this short video, to see one possible solution to the problem, or read the instructions below the video.
In the screen shot below, the Manager column has a drop down list with 5 names.
However, if a different name is typed in that column, there is no error alert. The name Bill is not in the list, but was allowed in the cell.
This occurs when a named range is used as the list source, and there is a blank cell anywhere in that named range. Shown below is the named range, MgrList, with a blank cell at the end.
Note: If the source list is a range address, e.g. $A$1:$A$10, and contains blank cells, invalid entries will be blocked, with Ignore blank on or off.
Blank cells can also cause problems for dependent drop down lists. Watch this short Excel tutorial video on the potential problems when Ignore Blank is turned off, and the Circle Invalid Data feature is used.
If the Error Alert is turned off, users will be able to type any entry, without receiving an error message. To turn the alert on:
In Excel 2000 and earlier versions, you can change the selection in a data validation dropdown, if the list is from a range on the worksheet. If the list is typed in the data validation dialog box, the selection can't be changed.
In Excel 2002 and later versions, neither type of dropdown list can be changed if the cell is locked and the sheet is protected.
This MSKB article has information on the previous behaviour:
XL97: Error When Using Validation Drop-Down List Box http://support.microsoft.com/default.aspx?id=157484
The Data Validation dropdown is the width of the cell that it's in, to a minimum of about 3/4". You could use a SelectionChange event to temporarily widen the column when it's active, then make it narrower when you select a cell in another column.
For example, with Data Validation cells in column D:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column = 4 Then Target.Columns.ColumnWidth = 20 Else Columns(4).ColumnWidth = 5 End If End Sub
To add this code to the worksheet:
In a Data Validation dropdown list, you can't change the font or font size. So, if your worksheet is zoomed down, to show more cells, it will be difficult to read the drop down list, in its 8-point size. To address the problem, you could
To make it easier to read, you could use a combo box or listbox, to show the entries. The font in those can be set to any size, and you can also set them to show more than the default 8 items at a time. See instructions for adding a combo box, or showing a listbox (can be set for single selection or multiple selection).
To make the text appear larger, you can use an event procedure (three examples are shown below) to increase the zoom setting when the cell is selected. (Note: this can be a bit jumpy)
Or, you can use code to display a combobox, as described in the previous section.
If cell A2 has a data validation list, the following code will change the zoom setting to 120% when that cell is selected.Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$2" Then ActiveWindow.Zoom = 120 Else ActiveWindow.Zoom = 100 End If End Sub
To add this code to the worksheet:
If several cells have a data validation list, the following code will change the zoom setting to 120% when any of those cells are selected. In this example, cells A1, B3 and D9 have data validation.Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Intersect(Target, Range("A1,B3,D9")) Is Nothing Then ActiveWindow.Zoom = 100 Else ActiveWindow.Zoom = 120 End If End Sub
The following code will change the zoom setting to 120% when any cell with a data validation list is selected.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim lZoom As Long Dim lZoomDV As Long Dim lDVType As Long lZoom = 100 lZoomDV = 120 lDVType = 0 Application.EnableEvents = False On Error Resume Next lDVType = Target.Validation.Type On Error GoTo errHandler If lDVType <> 3 Then With ActiveWindow If .Zoom <> lZoom Then .Zoom = lZoom End If End With Else With ActiveWindow If .Zoom <> lZoomDV Then .Zoom = lZoomDV End If End With End If exitHandler: Application.EnableEvents = True Exit Sub errHandler: GoTo exitHandler End Sub
For regular Excel news, tips and videos, please sign up for the Contextures Excel newsletter. Your email address will never be shared with anyone else.
Search Contextures Sites
Last updated: May 24, 2015 2:05 PM