VBA Excel在多列多选列表框

时间:2017-04-10 18:07:54

标签: excel-vba listbox multi-select userform vba

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

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

我尝试在列表框的加载中进行检查,但由于我因错误而跳闸而将其分离以使事情更清楚,错误发生在下面的代码 CRM_Edit_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':对象需要",我知道我无法在这里使用行但是搜索网站和谷歌我只是找到有关如何从列表框中读取所选项目的信息页面,而不是在初始化期间如何选择。

1 个答案:

答案 0 :(得分:1)

你应该使用

CRM_Edit_Groups.ListBox1.Selected(j) = True

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