Прежде всего, для того, чтобы попытаться установить диапазон listfill из VBA, вам нужно включить знак '=', например:
combobox.ListFillRange = "=E3:E13"
, а не combobox.ListFillRange = "E3:E13"
, это не сработает.
Вы можете иметь динамический именованный диапазон, например:
listItems: "=Sheet1!$A$1:INDEX(Sheet1!$A:$A;COUNTA(Sheet1!$A:$A))"
Используйте VBA, чтобы установить ListFillRange следующим образом: combobox.ListFillRange = "=listItems"
Опять же, используйте знак '='
!!
Этот динамический диапазон listItems динамически увеличивается / уменьшается в зависимости от того, какие значения есть в столбце A.
Я знаю, что отвечаю очень поздно, но я заметил, что многие люди думают, что именованные диапазоны всегда должны быть фиксированными, хотя они также могут быть динамичными ...
Как ты это делаешь?
В Excel 2007 и выше вы переходите на вкладку ленты "Formulas"
и нажимаете кнопку «Диспетчер имен»
Вместо того, чтобы выбирать ячейки и давать им имя в этом верхнем левом поле, вы можете управлять всеми определенными именованными диапазонами здесь.
Создайте новый и присвойте ему значение (без кавычек):
"=Sheet1!$A$1:INDEX(Sheet1!$A:$A;COUNTA(Sheet1!$A:$A))"
.
Вот, пожалуйста ...
P.S. Когда вы позволяете динамическому именованному диапазону изменяться, вы должны использовать VBA для переустановки .ListFillRange так, чтобы комбинированный список обновлял свои элементы списка.