/ / Múltiples selecciones de cuadro de lista en Excel VBA

Múltiples selecciones de cuadro de lista en Excel VBA

los Propiedad de selección múltiple en Excel VBA permite a un usuario seleccionar varios elementos en un cuadro de lista. El formulario de usuario que vamos a crear se ve de la siguiente manera:

Múltiples selecciones de cuadro de lista en Excel VBA

Para crear este formulario de usuario, ejecute los siguientes pasos.

1. Abra el Editor de Visual Basic. Si el Explorador de proyectos no está visible, haga clic en Ver, Explorador de proyectos.

2. Haga clic en Insertar, formulario de usuario. Si el Cuadro de herramientas no aparece automáticamente, haga clic en Ver, Cuadro de herramientas. Su pantalla debe configurarse como se muestra abajo.

Configuración de pantalla de formulario de usuario en Excel VBA

3. Agregue los cuadros de lista (primero a la izquierda, el segundo a la derecha), los botones de comando, las casillas de verificación (primero a la izquierda, el segundo a la derecha), los botones de cuadro y opción (primero en la parte superior, el segundo debajo de los primeros) , y así). Una vez que se haya completado, el resultado debe ser consistente con la imagen del formulario de usuario que se mostró anteriormente. Por ejemplo, cree un control de cuadro de lista haciendo clic en ListBox en el cuadro de herramientas. A continuación, puede arrastrar un cuadro de lista en el formulario de usuario. Cuando llegue al marco "Seleccionar tipo", recuerde dibujar este marco primero antes de colocar los tres botones de opción en él.

4. Puede cambiar los nombres y las leyendas de los controles. Los nombres se utilizan en el código de Excel VBA. Los subtítulos son aquellos que aparecen en tu pantalla. Es una buena práctica cambiar los nombres de los controles, pero no es necesario aquí porque solo tenemos algunos controles en este ejemplo. Para cambiar el título del formulario de usuario, los botones de comando, las casillas de verificación, los cuadros de marco y opción, haga clic en Ver, Ventana de propiedades y haga clic en cada control.

5. Para mostrar el formulario de usuario, coloque un botón de comando en su hoja de trabajo y agregue la siguiente línea de código:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Ahora vamos a crear el Sub UserForm_Initialize. Cuando use el método Mostrar para el formulario de usuario, este sub se ejecutará automáticamente.

6. Abra el Editor de Visual Basic.

7. En el Explorador de proyectos, haga clic con el botón derecho en UserForm1 y luego haga clic en Ver código.

8. Primero, declare la variable i de tipo Integer. Declare la variable en la sección Declaraciones generales (en la parte superior del código). De esta manera, solo tiene que declarar la variable una vez y puede usarla en múltiples subs.

Dim i As Integer

9. Elija Userform en la lista desplegable de la izquierda. Elija Inicializar de la lista desplegable de la derecha.

10. Agregue las siguientes líneas de código:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Sales"
    .AddItem "Production"
    .AddItem "Logistics"
    .AddItem "Human Resources"
End With

OptionButton3.Value = True

End Sub

Explicación: el primer cuadro de lista se llenará y el tercer botón de opción se configurará como predeterminado.

Ahora hemos creado la primera parte del formulario de usuario. Aunque ya se ve bien, nada sucederá aún cuando hagamos clic en los botones de comando o en los otros controles.

11. En el Explorador de proyectos, haga doble clic en UserForm1.

12. Haga doble clic en el botón Agregar.

13. Agregue las siguientes líneas de código:

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub

Explicación: Excel VBA recorre el primer cuadro de lista (número de índice de lista cero (0) para el primer elemento de la lista) y, si se selecciona, agrega el elemento al segundo cuadro de lista.

14. Haga doble clic en el botón Eliminar.

15. Agregue las siguientes líneas de código:

Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

Explicación: Excel VBA recorre el segundo cuadro de lista y, si se selecciona, elimina el elemento. La variable de contador mantiene un registro del número de elementos eliminados.

16. Haga doble clic en el primer botón de opción.

17. Agregue las siguientes líneas de código:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Haga doble clic en el segundo botón de opción.

19. Añade las siguientes líneas de código:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Haga doble clic en el tercer botón de opción.

21. Agregue las siguientes líneas de código:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Explicación: la configuración de "Seleccionar tipo" se puede elegir haciendo clic en los botones de opción. La imagen del formulario de usuario que se muestra anteriormente ofrece una descripción de cada configuración. En lugar de configurar esta configuración en tiempo de ejecución, también puede configurar esta configuración en tiempo de diseño. Para lograr esto, haga clic con el botón derecho del mouse en un control de cuadro de lista y luego haga clic en Propiedades. Establezca la propiedad MultiSelect en 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti o 2 - fmMultiSelectExtented.

22. Haga doble clic en la primera casilla de verificación.

23. Agregue las siguientes líneas de código:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

Explicación: al marcar la primera casilla de verificación, se pueden seleccionar / deseleccionar todos los elementos del primer cuadro de lista.

24. Haga doble clic en la segunda casilla de verificación para agregar las mismas líneas de código. Solo reemplace CheckBox1 con CheckBox2 y ListBox1 con ListBox2.

Lea también: