cycling through values in a MS Access list box
Here is how you iterate through the ListBox:
Dim i as IntegerFor i = 0 to Me.ListBoxName.ListCount -1 'Access each item with 'Me.ListBoxName.ItemData(i)Next i
You can do a For
loop to examine each row in the listbox, and do whatever with the rows which are selected. In this example, I display the second column from selected items in the lstLocations listbox. (Column numbering starts with zero.)
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 strMsgEnd Sub
Note I assumed you want the selected items from the list box. If you want all items, selected or not, you could use .ItemData
as @DavidRelihan suggested. However, in that case, you could get them from the listbox .RowSource
instead.
If working with a listbox in Access I like to capture the listbox recordset and loop through it. Perhaps because I find DAO recordset objects easy to work with.
I'd do something like:
Dim Rst as DAO.RecordsetSet Rst = lbxYourListboxObj.Recordset'test to assure that there are recordsIf Rst.EOF then 'some error handlingend if'I'm just paranoid so I always do thisRst.MoveFirst'iterate through listDo 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 Rst.MoveNextLoop