VBA - ComboBox 出现编译错误

VBA - ComboBox 出现编译错误

花了 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 会自动扩展数据范围。

根据需要调整代码中的工作表、组合框、范围名称以及单元格引用。

相关内容