2017-04-10 206 views
0

我想加载一个带有两列的项目的列表框,根据电子表格检查每个条目,并选择该行(如果找到该条目)。VBA Excel预先选择多列多选列表框中的项目

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

我试图在加载列表框的时候进行检查,但是因为我错误地绊倒了,所以我把它分离出来以使事情更清楚,错误发生在以下代码行CRM_Edit_Groups.ListBox1(j) .Selected =真

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':对象需要”,我知道我没有管理与这里的行一起工作,但搜索网站和谷歌我只是找到信息页面如何阅读从一个选定的项目列表框,并没有太多关于如何在初始化过程中选择。

回答

0

您应该使用

CRM_Edit_Groups.ListBox1.Selected(j) = True 

此外,请确保您的列表允许多项选择。在用户窗体中选择你的列表框并转到对象属性。找到属性MultiSelect并选择了选项1

+0

马吕斯,已经做到了,而且比我能看到我错在哪里更好!谢谢 –