2016-12-02 7 views
0

В настоящее время я создаю пользовательскую форму. В excel vba и хочу заполнить один из моих списков. Я не могу заставить его заселяться из ряда ячеек в другой книге? Ссылка на рабочую книгу и название листа верны, я скопировал и протестировал ее из рабочего кода. Я попытался установить частный сабвуфер к общественности, но я получаю те же результатыКак заполнить поле списка у пользователя из диапазона ячеек в другой книге?

Private Sub UserForm_Initialize() 

     Shop_UserForm_ClockIn_Listbox_EmployeeName.List = Workbooks("hub.xlsb").Sheets("EmployeeNames").Range("f2").value    
End Sub 

Это сообщение об ошибке,

Ошибка выполнения «381», Не удалось установить свойство List. Недопустимый индекс массива свойств

+0

Как упомянуто @ YowE3K, ' .List' требует массив, поэтому вы назначаете ему массив. 1D массив. – L42

ответ

0

Ваш код сбой, потому что вы пытаетесь присвоить одно значение List.

Это будет работать:

Private Sub UserForm_Initialize()  
    Shop_UserForm_ClockIn_Listbox_EmployeeName.List = Workbooks("hub.xlsb").Sheets("EmployeeNames").Range("f2:f3").value    
End Sub 

, потому что это назначение массив значений.


Если вы действительно просто хотите установить List к одному значению, вы можете сделать одно из следующих действий:

Private Sub UserForm_Initialize() 
    Shop_UserForm_ClockIn_Listbox_EmployeeName.List = Array(Workbooks("hub.xlsb").Sheets("EmployeeNames").Range("f2").value) 
End Sub 

или

Private Sub UserForm_Initialize() 
    Shop_UserForm_ClockIn_Listbox_EmployeeName.AddItem Workbooks("hub.xlsb").Sheets("EmployeeNames").Range("f2").value    
End Sub