Циклическое перемещение по значениям в поле списка доступа MS Access

У меня есть окно списка, которое заполняется различными наборами данных на основе пользовательских выборов.

Как я могу перебирать любые значения, которые могут быть в списке? Это оператор For Each, или что?

Ответ 1

Вы можете сделать цикл 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 . Однако в этом случае вы можете получить их из списка .RowSource.

Ответ 2

Вот как вы перебираете ListBox:

Dim i as Integer

For i = 0 to Me.ListBoxName.ListCount -1
   'Access each item with 
   'Me.ListBoxName.ItemData(i)
Next i