将select属性添加到ListboxVBA

我试图从工作表中填充一个列表框,并且想要预先确定哪些列表项已经有一个checkbox。 我已经find了方法来确定列表框中的哪些项目被检查,但没有其他的方式。 我有代码来运行我的列表,并插入我的范围内的每个项目,但无法find一种方法来分配选定的属性。 我的工作表将有每个项目添加1和0是否被选中。

工作表;

Item Include? TaskA 1 TaskB 0 TaskC 1 

我想在1的所有内容旁边都有一个选定的标记,而不是包含0的所有内容。

这是我目前的尝试,我尝试一个循环(我),它在插入的字段旁边的表中查找:

 For Each RngTask In ws.Range(Cells(2, 2), Cells(Count, 2)) FRM_StorageOptions.StorageList.AddItem RngTask.Value If ws.Cells(i, 2) = 1 Then FRM_StorageOptions.StorageList.Selected(i - 1) = True Else FRM_StorageOptions.StorageList.Selected(i - 1) = False End If i = i + 1 Next RngTask 

然而,它不会允许我分配此属性,并返回“无法设置选定的属性。无效的属性值”。 添加到列表工作正常,没有我尝试添加选定的值。

任何帮助表示赞赏。

如果ws <> ActiveSheet ws.Range(Cells(2, 2), Cells(Count, 2))将会失败。 这是因为范围内的单元格必须被限定为与范围相同的工作表。

看来您想要添加列A中的值并检查列B以查看是否应该select它们。 您可以从列B添加并检查列B.


    物品包括?
     TaskA 1 
    任务B 0 
    任务C 1

这是我最好的猜测,你要做什么。

 With FRM_StorageOptions.StorageList For Each RngTask In ws.Range("A2", "A" & Count) .AddItem RngTask.Value .Selected(.ListCount - 1) = RngTask.Offset(0, 1) = 1 Next RngTask End With 

Set用于分配对象。 当你想分配一个非对象值,如布尔值或整数,你不使用Set

尝试改变:

 Set FRM_StorageOptions.StorageList.Selected(i - 1) = True 

至:

 FRM_StorageOptions.StorageList.Selected(i - 1) = True 

对于使用Set的其他两行也是这样做的

即使列表框本身是一个对象,您分配的属性不是对象,因此不使用Set