使用Excel VBA从ListBox存储多个用户输入

时间:2016-10-28 22:17:28

标签: excel vba excel-vba listbox multipleselection

我试图让用户从 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还很陌生....请帮忙。

1 个答案:

答案 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