我试图从工作表中填充一个列表框,并且想要预先确定哪些列表项已经有一个复选框。我已经找到了确定列表框中哪些项目被检查的方法,但没有相反的方法。我有代码运行我的列表并插入我的范围内的每个项目,但无法找到分配所选属性的方法。我的工作表将添加每个项目,并选择是否为1或0。
工作表;
Item Include?
TaskA 1
TaskB 0
TaskC 1
我希望在所有的一个旁边都有一个选定的标记,而不包含一个带有0的所有标记。
这是我目前的尝试,我尝试循环(i)在其插入的字段旁边的表中查找:
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
但是它不允许我分配此属性并返回"无法设置所选属性。无效的属性值"。添加到列表工作正常,而我没有尝试添加所选值。
感谢任何帮助。
答案 0 :(得分:1)
Set
用于分配对象。如果要分配非对象值(如布尔值或整数),则不要使用Set
尝试更改:
Set FRM_StorageOptions.StorageList.Selected(i - 1) = True
为:
FRM_StorageOptions.StorageList.Selected(i - 1) = True
并对使用Set
即使列表框本身是一个对象,您分配的属性也不是对象,因此不使用Set
答案 1 :(得分:0)
ws.Range(Cells(2, 2), Cells(Count, 2))
, ws <> ActiveSheet
将失败。这是因为范围内的单元格必须符合与范围相同的工作表。
您似乎想要添加A列的值并检查B列,看看是否应该选择它们。您可以从B列添加并检查B列。
Item Include? TaskA 1 TaskB 0 TaskC 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