2016-12-02 33 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」, 無法設置列表屬性。無效的屬性數組索引

+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 
相關問題