早上好!
我正在尝试通过使用函数来填充各种ComboBox来使我的代码更通用,但是,我很难做到这一点......
在UserForm中:
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
当我尝试运行代码时,没有任何反应,但是,没有显示任何错误。
答案 0 :(得分:2)
您的代码可以简化很多。它不需要在函数中,只需按照以下示例给它一个范围:
用户窗体:
Private Sub UserForm_Initialize()
ComboBox1.List = ThisWorkbook.Worksheets("Sheet1").Range("A1:A8")
End Sub
模块:
Public Sub ShowUserform()
UserForm1.Show
End Sub
答案 1 :(得分:2)
你的代码犯了很多错误,虽然CallumDA33解决方案更好,但我认为你应该看看这个:
首先,您没有正确调用您的功能。子应该是:
Private Sub UserForm_Initialize()
ComboBox1.List = Lista_Vendedores
End Sub
Call
行不是必需的。 (并且几乎不需要关键字Call
本身)。我真的不知道你的语法来自哪里。
Lista_Vendedores
函数中,您没有正确使用Lista
Collection
。Cont
未定义。您应该始终在模块的开头使用Option Explicit
。Select
。List
属性需要变量数组,而不是集合,因此函数应返回变量数组,而不是包含单个(空)集合对象的变量,因此我还更改了Lista的类型。 / LI>
遵循经过纠正但未经测试的代码:
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
编辑:修正错字