花了 4 个小时,没有结果。我收到此特定用户窗体 (UserformX) 的编译错误“未找到方法或数据”。但它在另一个 UserformY 中运行正常,非常完美。为什么我会收到编译错误?
目标:我只想在 ComboBox1 中填充 2,000 个职位。这 2,000 个职位列表位于“背景”选项卡中。请帮忙?
Private Sub UserForm_Initialize()
Dim oneTitle As Range
Dim ws As Worksheet
Set ws = Worksheets("Background")
For Each oneTitle In ws.Range("A3:A2003")
With UserFormX.ComboBox1
.AddItem ComboBox1.Value
.List(.ComboBox1.ListCount - 1, 1) = ComboBox1.Offset(0, 1).Value
End With
Next oneTitle
End Sub
错误截图...
答案1
您收到错误是因为所使用的方法是针对多列组合框,而您只想从一列填充数据。
记住偏移量用于添加第二列值,代码应该,,
.List(.ListCount - 1, 1) = XPart.Offset(0, 1).Value
XPart
范围在哪里。
这个简单的 VBA 代码可以解决这个问题:
Private Sub UserForm_Initialize()
ComboBox1.List = [Sheet2!A1:A10].Value
End Sub
也可以使用命名范围来填充组合框。
怎么运行的:
- 从F或点击公式TAB德定义名称。
为了否在新名称对话框中输入范围的名称,
JobTitle
然后在Refers,输入以下公式:=OFFSET(Background!$A$2, 0, 0, COUNTA(Background!$A:$A)-1,1)
完成哦k.
C奥皮&磷粘贴此代码。
Private Sub UserForm_Initialize()
Dim rngJob As Range
Dim ws As Worksheet
Set ws = Worksheets("Background")
For Each rngJob In ws.Range("JobTitle")
Me.cboJobs.AddItem rngJob.Value
Next rngJob
End Sub
注意:
使用命名范围的好处是,如果添加新值,Excel 会自动扩展数据范围。
根据需要调整代码中的工作表、组合框、范围名称以及单元格引用。