VBA Excel在多列多选列表框中预选项目

VBA Excel在多列多选列表框中预选项目,excel,listbox,multi-select,userform,vba,Excel,Listbox,Multi Select,Userform,Vba,我试图加载一个包含两列项目的列表框,对照电子表格检查每个条目,如果找到该条目,则选择该行 结果是加载一个客户列表,识别和选择邮件列表中已有的项目,允许用户编辑选择并使用更新的选择更新电子表格 我试图在加载列表框的过程中进行检查,但由于出现错误,我将其分离出来以使事情更清楚,错误出现在下面的代码中,行CRM\u Edit\u Groups.ListBox1(j).Selected=True With Rows(1) Set c = .Find(What:=showgroup

我试图加载一个包含两列项目的列表框,对照电子表格检查每个条目,如果找到该条目,则选择该行

结果是加载一个客户列表,识别和选择邮件列表中已有的项目,允许用户编辑选择并使用更新的选择更新电子表格

我试图在加载列表框的过程中进行检查,但由于出现错误,我将其分离出来以使事情更清楚,错误出现在下面的代码中,行CRM\u Edit\u Groups.ListBox1(j).Selected=True

    With Rows(1)
        Set c = .Find(What:=showgroup, LookIn:=xlValues, LookAt:=xlWhole)
    End With

    For i = 0 To wk.Sheets("temp").UsedRange.Rows.count + 1
        code = wk.Sheets("temp").Range("a" & mycount)
        company_name = wk.Sheets("temp").Range("b" & mycount)

        CRM_Edit_Groups.ListBox1.ColumnCount = 2
        CRM_Edit_Groups.ListBox1.ColumnWidths = "40;80"
        CRM_Edit_Groups.ListBox1.AddItem
        CRM_Edit_Groups.ListBox1.list(i, 0) = code
        CRM_Edit_Groups.ListBox1.list(i, 1) = company_name
        mycount = mycount + 1
    Next


    For j = 0 To Me.ListBox1.ListCount - 1
        check = Me.ListBox1.list(j, 0)
        With Columns(c.Column)
            Set d = .Find(What:=check, MatchCase:=False)
        End With
        If Not d Is Nothing Then CRM_Edit_Groups.ListBox1(j).Selected = True
        If Not d Is Nothing Then Set d = Nothing
    Next
我包含了加载列表框的代码,以及根据电子表格检查每个列表框的循环,我尝试了许多组合,包括:

CRM_Edit_Groups.ListBox1(j,0).Selected = True
CRM_Edit_Groups.ListBox1(j,1).Selected = True
CRM_Edit_Groups.ListBox1(j.row).Selected = True
…但所有这些都会导致“运行时错误'424':需要对象”,我知道我无法处理此处的行,但在搜索站点和google时,我只找到有关如何从列表框中读取所选项目的页面信息,而没有太多关于如何在初始化期间进行选择的页面信息

您应该使用

CRM_Edit_Groups.ListBox1.Selected(j) = True

此外,请确保您的列表允许多个选择。在userform窗口中选择列表框并转到对象属性。在那里找到属性
MultiSelect
并选择选项
1

马吕斯,这样做了,而且比这更好的是,我可以看出我错在哪里了!非常感谢。