Как предварительно составить список списков из Excel в пользовательскую форму? - PullRequest
0 голосов
/ 07 января 2019

Я хочу взять из списка наборов данных «список имен» и использовать его для пользовательской формы Combobox. Пользователь использует выпадающее меню из Combobox, чтобы выбрать имя.

Моя проблема в том, что я не знаю, как применить наборы данных «список имен» к списку. Диапазон для списка имен находится в ячейке C2: AU2, а в рабочей таблице он называется «DoNotPrint-Names». Как только имя выбрано пользователем, я хочу, чтобы оно выводилось в ячейку на рабочем листе «DoNotPrint-Setup» при нажатии кнопки «Далее».


Снимок экрана: часть списка имен: https://imgur.com/sqsUFmF


Скриншот пользовательской формы: https://imgur.com/UX8ytrY

Я попробовал приведенный ниже код, который просит пользовательскую форму предварительно заполнить ячейки из листа «DoNotPrint - Names», транспонировав его первым, начиная с одной строки. Не уверен, что делать дальше.

Private Sub UserForm_Initialize()

    ComboBox1.List = WorksheetFunction.Transpose(DoNotPrint - Names.Range("C2:AU2"))

End Sub

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Приложение к найденному решению

Только в дополнение к действительному ответу @ 0m3r , вы можете использовать подход массива , чтобы назначить весь именованный горизонтальный список свойству .List комбобокса в одной строке :

Me.ComboBox1.List = Application.Transpose([myList]) 

Редактировать

В качестве альтернативы вы можете использовать свойство .Column элемента управления, которое кажется довольно неизвестным:

Me.ComboBox1.Column = [myList].Value 
0 голосов
/ 07 января 2019

Выберите ваш список и дайте ему имя,

Пример

enter image description here

Затем загрузите этот список в ваш ComboBox1

Пример кода

Option Explicit
Private Sub UserForm_Activate()
    Dim vList As Variant

    For Each vList In [MyList]
        Me.ComboBox1.AddItem vList
    Next

End Sub

enter image description here

...