2010-05-28 8 views
10

J'ai une zone de liste qui remplit différents ensembles de données en fonction des sélections effectuées par l'utilisateur.parcourir les valeurs dans une zone de liste MS Access

Comment puis-je faire défiler les valeurs qui peuvent figurer dans la zone de liste? Est-ce une déclaration For Each, ou quoi?

+0

N'oubliez pas que vous pouvez avoir une zone de liste multisélect et utiliser la propriété Selected si l'espace sur le formulaire devient un problème. – Fionnuala

Répondre

16

Vous pouvez vous faire une boucle For pour examiner chaque ligne dans la liste, et faire tout ce qui avec les lignes qui sont sélectionnées. Dans cet exemple, j'affiche la deuxième colonne des éléments sélectionnés dans la zone de liste lstLocations. (La numérotation des colonnes commence par zéro.)

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 

note J'ai supposé que vous vouliez les éléments sélectionnés dans la zone de liste. Si vous voulez tous les éléments, sélectionnés ou non, vous pouvez utiliser .ItemData comme @DavidRelihan suggested. Toutefois, dans ce cas, vous pouvez les obtenir à partir de la zone de liste .RowSource à la place.

+0

merci Hans! m'a pris un peu mais je l'ai fonctionné. Merci! – Justin

20

Voici comment vous itérer ListBox:

Dim i as Integer 

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

merci! Cela a bien fonctionné aussi! – Justin