使用 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
我试图让用户 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