如果单元格值为1,则列表框.listindex = value

时间:2014-04-10 01:35:31

标签: excel vba excel-vba listbox

我有以下代码:

If ws.cells(A,B).value = "1" then .ListBox1.List(.ListBox1.ListIndex,5) = Checkbox.name

但它会提示错误,我不确定如何修复它

基本上,我想要实现的是,如果单元格(A,B)的值为1,则将复选框的名称插入到listbox,listindex为5。

以下代码添加了所有其他先前的listindex:

.list(.listcount -1, 1) = ws.cells(C,D).value

.list(.listcount -1,1) = ws.cells (E,F).value

1 个答案:

答案 0 :(得分:0)

这是使用项目填充ListBox的方法。

For i = 1 to 5
    With me.ListBox1
        .AddItem i
    End With
Next

假设ListBox1中有UserForm1,则会产生:

假设您要将5替换为6,请使用.List属性,如下所示:

Me.ListBox1.List(4, 0) = 6

语法: expression.List(pvargIndex,pvargColumn)
同样,当您使用.List属性时,IndexColumn始终比实际ItemColumn少1。 由于我们希望将5中的6替换为ListBox,其中包含1列和5个项目,Index的{​​{1}}为4,而5Column 1}}是0 结果将是:

现在,如果您有多列ListBox并希望填充Columns,那该怎么办? 说Column我们的ListBox1 2,我们使用此代码。

For i = 1 To 5
    With Me.ListBox1
        .List(i - 1, 1) = "Item" & i
    End With
Next

记下Index i - 1Column 1(实际列数-1) 结果将是:

那么让我们回到你的问题 这一行:

If ws.cells(A,B).value = "1" then .ListBox1.List(.ListBox1.ListIndex,5) = Checkbox.name

将失败,因为您正在尝试填充我认为不存在的Column 6 ListBox1。 您还使用.ListIndex属性返回当前选定的项目索引 我不知道您在执行代码的位置,但最初,.ListIndex值为-1,因为当用户选择项目时,它只会在运行时具有值。

现在这些行:

.list(.listcount -1, 1) = ws.cells(C,D).value
.list(.listcount -1, 1) = ws.cells(E,F).value

实际上只是替换最后一项第二列值 首先它将ws.cells(C,D).Value传递给它,然后用ws.cells(E,F).value覆盖它 希望这能为你解决一些问题。