A continuación vamos a ver un programa en Excel VBA que crea un formulario de usuario que contenga un cuadro de varias columnas combinado.

El formulario de usuario que se va a crear un aspecto de la siguiente manera:

Multicolumn Combo Box in 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 es 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, Caja de herramientas. Su pantalla debe ser configurado de la siguiente manera.

Userform Screen Setup in Excel VBA

  1. Añadir los botones de etiqueta, cuadro combinado y de mando. Una vez que esto se ha completado, el resultado debe ser consistente con la imagen del formulario de usuario mostrado anteriormente. Por ejemplo, crear un control de cuadro combinado haciendo clic en ComboBox desde el cuadro de herramientas. A continuación, puede arrastrar un cuadro combinado en el formulario de usuario.

  2. Puede cambiar los nombres y los títulos de los controles. Los nombres se utilizan en el código VBA Excel. Los títulos son los que aparecen en la pantalla. Es una buena práctica para cambiar los nombres de los controles, pero no es necesario en este caso, porque sólo tenemos unos pocos controles en este ejemplo. Para cambiar el título de los botones de formulario de usuario, la etiqueta y de comando, haga clic en Ver, Ventana Propiedades y haga clic en cada control.

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

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

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

  1. Abra el Editor de Visual Basic.

  2. En el Explorador de proyectos, haga clic en UserForm1 y haga clic en Ver código.

  3. Elegir formulario de usuario de la lista desplegable izquierda. Inicializar elegir de la lista desplegable de la derecha.

  4. Se añaden 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 de la lista desplegable a 2. En lugar de establecer el número de columnas en tiempo de ejecución, también se puede configurar esta opción en tiempo de diseño. Para lograr esto, botón derecho del ratón en el control de cuadro combinado, haga clic en Propiedades y establezca la propiedad ColumnCount a 2. A continuación, declaramos e inicializar una matriz de dos dimensiones. La última línea de código asigna la matriz para el cuadro combinado.

Ahora hemos creado la primera parte del formulario de usuario. A pesar de que se ve bien ya, no pasará nada sin embargo, cuando hacemos clic en los botones de comando en el formulario de usuario.

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

  2. Haga doble clic en el botón OK.

  3. Añadir 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 cerrar el formulario de usuario de Excel VBA y mostrar el tema y género seleccionado. El ‘On Error Resume Next’ declaración omite el error cuando se llena el usuario en su / su propia película (en este caso no hay ningún género disponible).

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

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

Private Sub CommandButton2_Click()

Unload Me

End Sub

Resultado Cuando se selecciona la velocidad y haga clic en OK.

Multicolumn Combo Box Result

Multicolumn Combo Box Result