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

Storing Multiple User Inputs from a ListBox using Excel VBA

我试图让用户 select 来自 ActiveX 列表框 (ListBoxTest1) 的多个选项,然后将它们的 select 离子存储在单独的行中在另一个 sheet 上。当此处显示的第一行即将执行时,我不断收到错误 "Unable to get the ListBoxes property of the Worksheet class"。

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 还是很陌生...请帮忙。

A Worksheet 实际上没有 ListBoxes 属性 和 Sheets("Availability Criteria") returns 强类型 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