Cómo determinar los elementos seleccionados en un control ListBox


Para obtener una versión de Microsoft Word 98 Macintosh Edition de este artículo, consulte 201669 .

Resumen


Este artículo describe cómo recuperar elementos seleccionados de un
Control de cuadro de lista que permite seleccionar varios valores.

Más información


Microsoft proporciona ejemplos de programación únicamente con fines ilustrativos, sin ninguna garantía expresa o implícita. Esto incluye, pero no se limita, a las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. Este artículo asume que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos.

En un UserForm, cuando se establece la propiedad MultiSelect en 1 - fmMultiSelectMulti para un control de cuadro de lista , puede seleccionar cualquier número de elementos de una lista. Por ejemplo, si una lista contiene los días de la semana (el domingo, el lunes, el martes, el miércoles, el jueves, el viernes y el sábado), puede seleccionar ninguno, ninguno o todos los elementos.

Para determinar los elementos que están seleccionados, puede utilizar la propiedad Selected del cuadro de lista. La propiedad Selected de un cuadro de lista es una matriz de valores donde cada valor es True (si el elemento está activado) o False (si el elemento no está seleccionado).

Por ejemplo, si la lista contiene los siete días de la semana y el domingo, el martes y el sábado están activadas, la matriz de la propiedad Selected contendría los siguientes valores:
True, False, True, False, False, False, True
Esto es cierto porque se selecciona el primer elemento (domingo), el segundo elemento (lunes) no está seleccionado, se selecciona el tercer elemento (martes), no se seleccionan los elementos sextos (el miércoles, el jueves y el viernes) del cuarto y el séptimo elemento (sábado) está seleccionado.

Ejemplo del procedimiento de Visual Basic

El código de macro siguiente proporciona dos métodos para utilizar los datos seleccionados en el cuadro de lista. El primer método utiliza un elemento seleccionado en un momento, y el segundo método genera una lista de todos los elementos seleccionados.

Nota: Estos pasos para crear un UserForm en el Editor de Visual Basic, se supone que tiene un conocimiento de Visual Basic para Aplicaciones, Microsoft Word y Microsoft Forms herramientas de diseño y.
  1. Inicie el Editor de Visual Basic. Para ello, presione ALT + F11.
  2. Si el cuadro de diálogo de Propiedades no está visible, haga clic en Propiedades en el menú Ver .
  3. Si la ventana Explorador de proyectos no está visible, haga clic en
    Explorador de proyectos , en el menú Ver .
  4. En el menú Insertar , haga clic en
    UserForm.
  5. Haga clic en el control ListBox en el
    Controles de cuadro de herramientasy arrástrelo hasta el UserForm.
  6. En la ventana Propiedades de ListBox1 , cambie la propiedad SelecciónMúltiple (MultiSelect) al valor 1 - fmMultiSelectMulti .
  7. Haga clic en el control CommandButton en el
    Controles de cuadro de herramientasy a continuación, arrastre para el UserForm para poner el control CommandButton1 de control en el UserForm.
  8. Repita el paso 7 para colocar un segundo
    Control CommandButton en el UserForm. Esto pone el
    CommandButton2 control del UserForm.
  9. Haga doble clic en el UserForm para mostrar la ventana código para el UserForm.
  10. Presione AV PÁG y, a continuación, escriba el siguiente código de macro para el Userform_Initialize y los eventos CommandButton_Click :
Private Sub UserForm_Initialize()
'Creates and assigns the Array to the ListBox when the form loads.
Dim mylist As Variant

mylist = Array("Sunday", "Monday", "Tuesday", "Wednesday", _
"Thursday", "Friday", "Saturday")
ListBox1.List = mylist

End Sub

Private Sub CommandButton1_Click()

'First Method: Displays individual selections one at a time.
For x = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(x) = True Then
MsgBox ListBox1.List(x)
End If

Next x
Unload Me

End Sub

Private Sub CommandButton2_Click()

'Second Method: Displays all the items in one message box
Dim msg As String

For x = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(x) = True Then
msg = msg & ListBox1.List(x) & vbCrLf
End If

Next x
MsgBox "You have selected " & vbCrLf & msg
Unload Me

'Uncomment the following two line to insert the variable
'into a document.
'Documents.Add
'Selection.TypeText Text:= msg

End Sub