I have a spreadsheet with some date in a worksheet called "Skills Database".
Column F (3:959) of Skills Database is a list of 957 items of which some are filled and some are blank
Column AD of Skills Database is populated with =IFERROR(INDEX(BlanksRange,SMALL((IF(LEN(BlanksRange),ROW(INDIRECT("1:"&ROWS(BlanksRange))))),ROW(A1)),1),"")

Gives Column F without Blanks

The named range "NoBlanksRange" is =OFFSET('Skills Database'!$AD$3, 0, 0, COUNTA('Skills Database'!$AD$3:$AD$959)-COUNTIF('Skills Database'!$AD$3:$AD$959,""),1)

I have a data validation dropdown on 500 lines of another sheet in the workbook called "Character Sheet" which is populated with NoBlanksRange. When you select something from the list in 'Character Sheet'!A2 it updates Skills Database and changes which items are available in NoBlanksRange, therefore you have an updated set of selections for the dropdown in 'Character Sheet'!A3

The drop down is only 8 lines long, which is very unhelpful for this spreadsheet. I wanted to use a combobox to make the drop down longer, but here's the problem.

When you use a combobox it returns the list reference, not the text of the item in the list. so when the list updates, this reference is useless and links to the wrong item in the list. In some cases this is causing an infinite loop.

(select item 3 on the list causes something new to be item 3 on the list which means Item 3 was never selected and is available at item 3 so it is selected repeat ad infinitum)

Is there a way of getting a combobox, like a data validation list, to keep the contents even if the dynamic validation list changes?