/ / Excel VBA Multicolumn Combo Box

Cuadro combinado Excel VBA de varias columnas

A continuación veremos un programa en Excel VBA que crea un formulario de usuario que contiene una cuadro combinado de varias columnas.

El formulario de usuario que vamos a crear se ve de la siguiente manera:

Multicolumn Combo Box 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 la etiqueta, el cuadro combinado y los botones de comando. 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 combinado haciendo clic en ComboBox en el Cuadro de herramientas. A continuación, puede arrastrar un cuadro combinado en el formulario de usuario.

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 de los botones de formulario de usuario, etiqueta y comando, 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. Elija Userform en la lista desplegable de la izquierda. Elija Inicializar de la lista desplegable de la derecha.

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

Private Sub UserForm_Initialize()

ComboBox1.ColumnCount = 2

Dim Films(1 To 5, 1 To 2) As String
Dim i As Integer, j As Integer

Films(1, 1) = "Lord of the Rings"
Films(2, 1) = "Speed"
Films(3, 1) = "Star Wars"
Films(4, 1) = "The Godfather"
Films(5, 1) = "Pulp Fiction"

Films(1, 2) = "Adventure"
Films(2, 2) = "Action"
Films(3, 2) = "Sci-Fi"
Films(4, 2) = "Crime"
Films(5, 2) = "Drama"

ComboBox1.List = Films

End Sub

Explicación: La primera línea de código establece el número de columnas del cuadro combinado en 2. En lugar de configurar el número de columnas en tiempo de ejecución, también puede configurar este ajuste en el momento del diseño. Para lograr esto, haga clic con el botón derecho del ratón en el control del cuadro combinado, haga clic en Propiedades y establezca la propiedad ColumnCount en 2. A continuación, declaramos e inicializamos una matriz bidimensional. La última línea de código asigna la matriz al cuadro combinado.

Ahora hemos creado la primera parte del formulario de usuario. Aunque ya se ve limpio, no ocurrirá nada cuando hagamos clic en los botones de comando en el formulario de usuario.

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

11. Haga doble clic en el botón Aceptar.

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

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

On Error Resume Next
MsgBox "You like " & ComboBox1.Column(1) & " movies"

End Sub

Nota: estas líneas de código cierran el formulario de usuario de Excel VBA y muestran el elemento y género seleccionados. La declaración "On Error Resume Next" ignora el error cuando el usuario completa su propia película (en este caso no hay un género disponible).

13. Haga doble clic en el botón Cancelar.

14. Agregue la siguiente línea de código:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Resultado cuando selecciona Velocidad y haga clic en Aceptar.

Resultado del cuadro combinado de columnas múltiples

Resultado del cuadro combinado de columnas múltiples

Lea también: