我有以下代码:
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
答案 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
属性时,Index
和Column
始终比实际Item
和Column
少1。
由于我们希望将5
中的6
替换为ListBox
,其中包含1列和5个项目,Index
的{{1}}为4,而5
为Column
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 - 1
和Column
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
覆盖它
希望这能为你解决一些问题。