我试图让用户从 ActiveX ListBox(ListBoxTest1)中选择多个选项,然后将其选择存储在另一个工作表的不同行中。我一直收到错误"无法获取Worksheet类的ListBoxes属性"当这里显示的第一行即将被执行时。
Set listX = Sheets("Availability Criteria").ListBoxes("ListBoxTest1")
With listX
For i = 1 To .ListCount
If .Selected(i) Then
Sheets("WorkingSheet").Cells(i + 4, "F").Value = .Items(i)
End If
Next i
End With
我认为.Items属性是我从ListBox获取输入所需要的,但也许这就是有问题的非法属性。我的所有代码都在模块部分,而不是私有子。
我对Excel的VBA还很陌生....请帮忙。
答案 0 :(得分:0)
Worksheet
实际上本身没有ListBoxes
属性,Sheets("Availability Criteria")
会返回强类型Worksheet
。访问集合的最简单方法可能是后期绑定Worksheet
:
Dim sh As Object
Set sh = Sheets("Availability Criteria")
Set listX = sh.ListBoxes("ListBoxTest1")
修改强>
以上代码仅适用于表单控件。对于ActiveX控件,您需要通过OLEObjects
集合访问它们:
Dim listX As MSForms.ListBox
Set listX = Sheets("Availability Criteria").OLEObjects("ListBoxTest1").Object
With listX
For i = 1 To .ListCount
If .Selected(i) Then
Sheets("WorkingSheet").Cells(i + 4, "F").Value = .List(i)
End If
Next i
End With