2010-05-28 5 views
10

Tengo un cuadro de lista que se completa con diferentes conjuntos de datos según las selecciones del usuario.pasando por los valores en un cuadro de lista de MS Access

¿Cómo puedo pasar por cualquier valor dado que pueda estar en el cuadro de lista? ¿Es esto una declaración For Each, o qué?

+0

No olvide que puede tener un cuadro de lista de selección múltiple y usar la propiedad Seleccionado si el espacio en el formulario se convierte en un problema. – Fionnuala

Respuesta

16

Usted puede hacer un bucle For para examinar cada fila en el cuadro de lista, y hacer lo que sea con las filas que se seleccionan. En este ejemplo, muestro la segunda columna de elementos seleccionados en el lstLocations listbox. (La numeración de columnas comienza con cero.)

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 

Nota Supuse que desea los elementos seleccionados en el cuadro de lista. Si desea todos los artículos, seleccionados o no, puede usar .ItemData como @DavidRelihan suggested. Sin embargo, en ese caso, puede obtenerlos del cuadro de lista .RowSource.

+0

gracias Hans! me tomó un poco pero lo tengo funcionando. ¡Gracias! – Justin

20

Aquí es cómo iterar a través del cuadro de lista:

Dim i as Integer 

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

gracias! esto funcionó bien también! – Justin