Используйте столбец списка для заполнения поля со списком в пользовательской форме - PullRequest
1 голос
/ 16 июня 2020
• 1000 Имя "меня раздражает то, что мне приходится писать al oop в инициализации пользовательской формы, чтобы заполнить поле со списком.

Мне было интересно, и я безуспешно пытался использовать для заполнения столбец списка данных listobject databydyrange, но не повезло.

Теперь мне интересно, могу ли я использовать ссылку на столбец listobject в источнике строк combobox?

Вот код, который дает мне ошибку:

Worksheets("Engine").ListObjects("PeopleList").ListColumns("Name").Range.Select

enter image description here

1 Ответ

1 голос
/ 16 июня 2020

Вы можете установить поле со списком ListFillRange:

Sheet1.ComboBox1.ListFillRange = "Sheet1!A2:A7"

A ListColumn имеет Range, поэтому вы можете использовать его свойство Address:

Sheet1.ComboBox1.ListFillRange = Worksheets("Engine").ListObjects("PeopleList").ListColumns("Name").Range.Address

Это также добавит заголовок столбца, поэтому, как вы упомянули, вы можете использовать вместо него свойство DataBodyRange и его свойство .Address.

Sheet1.ComboBox1.ListFillRange = Worksheets("Engine").ListObjects("PeopleList").ListColumns("Name").DataBodyRange.Address

EDIT

Согласно комментариям, .ListFillRange существует только в элементах управления формой ActiveX, поэтому для ComboBox UserForm используйте Rowsource

Sheet1.ComboBox1.RowSource = myRange 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...