通过函数调用填充各种combobox
早上好!
我试图使我的代码更通用的使用函数来填充各种combobox,但是,我有麻烦做到这一点…
在用户窗体中:
Private Sub UserForm_Initialize() Call Lista_Vendedores ComboBox1.List = Lista_Vendedores End Sub
在模块中:
Public Function Lista_Vendedores() As Variant Dim Lista As New Collection Dim Cont_Vendedores As Integer Cont_Vendedores = Plan1.Cells(1, 8).Value Sheets("Plan1").Select For i = 3 To Cont Lista (Row.Cells(i, 8)) MsgBox Lista Next i Set Lista_Vendedores = Lista Set Lista = Nothing End Function
当我尝试运行代码时,没有任何反应,但没有显示任何错误。
你的代码可以简化很多。 它不需要在一个函数中,只要按照下面的示例给它一个范围:
窗体:
Private Sub UserForm_Initialize() ComboBox1.List = ThisWorkbook.Worksheets("Sheet1").Range("A1:A8") End Sub
模块:
Public Sub ShowUserform() UserForm1.Show End Sub
你在代码中犯了很多错误,而CallumDA33解决scheme更好,我想你应该看看这个:
首先,你没有正确地调用你的函数。 子应该是:
Private Sub UserForm_Initialize() ComboBox1.List = Lista_Vendedores End Sub
Call
线路是没有必要的。 (和关键字Call
本身几乎不需要)。 我真的不知道你的语法来自哪里。
- 在
Lista_Vendedores
函数中,您没有正确使用Lista
Collection
。 -
Cont
未定义。 您应该始终在模块开始时使用Option Explicit
。 - 您不会影响collections的任何价值。
- 你也应该尽量避免使用
Select
。 -
List
属性期望一个变体数组,而不是一个集合,所以函数应该返回一个变体数组,而不是包含单个(空)集合对象的变体,所以我也改变了Lista的types。
遵循更正但未经testing的代码:
Public Function Lista_Vendedores() As Variant() Dim Lista As Variant() Dim Cont_Vendedores As Integer With Sheets("Plan1") Cont_Vendedores = .Cells(1, 8).Value Redim Lista(0 to Cont_Vendedores-3) For i = 3 To Cont_Vendedores Lista(i-3) = .Cells(i,8) Next i End With Lista_Vendedores = Lista End Function
编辑:纠正错字