Link to home
Start Free TrialLog in
Avatar of mlagrange
mlagrangeFlag for United States of America

asked on

How to make data validation list drop-down appear in first column of new row?

Hello - I've got a data entry table of 10 columns and 100 rows. I've got col 1 (A) set up with a data validation list. It works fine on the existing 100 rows, but when I go down to row 101 and click in the cell at col A,  the list drop-down arrow does not appear until I actually make an entry in that cell, and move out of it. THEN I see the drop-down arrow appear, and the table expands to include this new row.  

How do you set up the table and/or data validation list to be available on the first blank row of a table?

(This table started out as a range; I selected it, and made a table out of it. Maybe that's my problem?)

This is in Excel 2010

Thanks
ASKER CERTIFIED SOLUTION
Avatar of regmigrant
regmigrant
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
This seems to work:

1) Create your table

2) Resize your table so that it includes an empty row at the bottom

3) Add this code to the sheet module for the worksheet with the table, to force the table to resize with the extra blank row

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim lo As ListObject
    Dim loRng As Range
    Dim loLastRow As Range
    
    Set lo = Me.ListObjects(1)
    Set loRng = lo.Range
    Set loLastRow = loRng.Rows(loRng.Rows.Count)
    
    If Not Intersect(loLastRow, Target) Is Nothing Then
        Application.EnableEvents = False
        lo.Resize loRng.Cells(1).Resize(loRng.Rows.Count + 1, loRng.Columns.Count)
        Application.EnableEvents = True
    End If
    
End Sub

Open in new window

Avatar of mlagrange

ASKER

Great! Thanks again!
Did you have a chance to review my suggestion?
Sorry Patrick - I just saw your post. I was wondering how to do that in code.

Thanks very much for your response.
Patrick - I am posting a 2nd question: "How would you do that in VBA?"
If you'll respond, I'll award you that one?

Thanks again

Mark
Patrick- nice piece of code, i'll be saving it for future use but it only works if you tab from last row of table - I tried change it to a selection change event so I can click below the table but it still fires too late - can you think of a better event to attach it to?
regmigrant,

I think you may have missed one of the key points: before deploying the code, you have to make sure that the table contains a blank row at the end.  Then, once a user actually populates a cell in that row, the table resizes.

Patrick
ah, even cooler