首页 文章

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

提问于
浏览
0

我试图让用户从 ActiveX ListBox(ListBoxTest1)中选择多个选项,然后将它们的选择存储在另一个工作表的不同行中 . 当这里显示的第一行即将执行时,我不断收到错误"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的新手....请帮忙 .

1 回答

  • 0

    Worksheet 本身实际上没有 ListBoxes 属性, Sheets("Availability Criteria") 返回强类型 Worksheet . 访问集合的最简单方法可能是后期绑定 Worksheet

    Dim sh As Object
    Set sh = Sheets("Availability Criteria")
    Set listX = sh.ListBoxes("ListBoxTest1")
    

    EDIT

    以上代码仅适用于表单控件 . 对于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
    

相关问题