我有一个列表框,根据用户选择填充不同的数据集。
如何循环显示列表框中的任何给定值?这是For Each
声明,还是什么?
答案 0 :(得分:23)
以下是迭代ListBox的方法:
Dim i as Integer
For i = 0 to Me.ListBoxName.ListCount -1
'Access each item with
'Me.ListBoxName.ItemData(i)
Next i
答案 1 :(得分:17)
您可以使用For
循环检查列表框中的每一行,并使用所选行 进行 。在此示例中,我显示 lstLocations 列表框中所选项目的第二列。 (列编号从零开始。)
Private Sub cmdShowSelections_Click()
Dim lngRow As Long
Dim strMsg As String
With Me.lstLocations
For lngRow = 0 To .ListCount - 1
If .Selected(lngRow) Then
strMsg = strMsg & ", " & .Column(1, lngRow)
End If
Next lngRow
End With
' strip off leading comma and space
If Len(strMsg) > 2 Then
strMsg = Mid(strMsg, 3)
End If
MsgBox strMsg
End Sub
注意我假设您想要列表框中的所选项目。如果您想要选择或不选择所有项目,可以使用.ItemData
作为@DavidRelihan suggested。但是,在这种情况下,您可以从列表框.RowSource
获取它们。
答案 2 :(得分:0)
如果在Access中使用列表框,我希望捕获列表框记录集并遍历它。也许是因为我发现DAO记录集对象易于使用。
我会做类似的事情:
Dim Rst as DAO.Recordset
Set Rst = lbxYourListboxObj.Recordset
'test to assure that there are records
If Rst.EOF then
'some error handling
end if
'I'm just paranoid so I always do this
Rst.MoveFirst
'iterate through list
Do Until Rst.EOF
'do something for each record
'it is nice and convenient to be able to reference the field names directly too!
debug.print Rst!Field1.name,Rst!Field1.value
Loop