A continuación, veremos un programa en Excel VBA que crea un formulario de usuario que contiene varias páginas. Este formulario de usuario también contiene imágenes.

El control de varias páginas contiene dos páginas. En la página 1, el usuario puede completar su información personal. En la página 2, el usuario puede indicar qué cuadro le gusta más.

Formulario de usuario Página 1
Formulario de usuario Página 2

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 la Caja de herramientas no aparece automáticamente, haga clic en Ver, Caja de herramientas. Su pantalla debe configurarse como se muestra a continuación.

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

3. Agregue el control de varias páginas, las etiquetas, los cuadros de texto (primero en la parte superior, el segundo debajo del primero), el marco, los botones de opción (primero a la izquierda, el segundo a la derecha), el cuadro de lista, el control de imagen y el botón de comando. Una vez que se haya completado, el resultado debe ser coherente con la versión vacía del formulario de usuario que se mostró anteriormente. Por ejemplo, cree un control de varias páginas haciendo clic en varias páginas en el cuadro de herramientas. A continuación, puede arrastrar un control de varias páginas en el formulario de usuario. Cuando llegue al marco Género, recuerde dibujar este marco primero antes de colocar los dos botones de opción en él.

4. Puede cambiar los nombres y los títulos de los controles. Los nombres se utilizan en el código de Excel VBA. Los subtítulos son los que aparecen en su pantalla. Es una buena práctica cambiar los nombres de los controles, pero no es necesario aquí porque solo tenemos unos pocos controles en este ejemplo. Para cambiar el título del formulario de usuario, pestañas de varias páginas, etiquetas, marco, botones de opción y botón de comando, haga clic en Ver, Ventana 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 utilice el método Show 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 de la lista desplegable de la izquierda. Elija Inicializar en la lista desplegable de la derecha.

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

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Mountains"
    .AddItem "Sunset"
    .AddItem "Beach"
    .AddItem "Winter"
End With

End Sub

Explicación: se llenará el cuadro de lista de la página 2.

Ahora hemos creado la primera parte del formulario de usuario. Aunque ya se ve ordenado, todavía no pasará nada cuando seleccionamos un elemento del cuadro de lista o cuando hagamos clic en el botón Aceptar.

10. Descarga las imágenes (lado derecho de esta página) y agrégalas a "C: test "

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

12. Haga doble clic en el cuadro de lista.

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

Private Sub ListBox1_Click()

If ListBox1.ListIndex = 0 Then
    Image1.Picture = LoadPicture("C:testMountains.jpg")
End If

If ListBox1.ListIndex = 1 Then
    Image1.Picture = LoadPicture("C:testSunset.jpg")
End If

If ListBox1.ListIndex = 2 Then
    Image1.Picture = LoadPicture("C:testBeach.jpg")
End If

If ListBox1.ListIndex = 3 Then
    Image1.Picture = LoadPicture("C:testWinter.jpg")
End If

End Sub

Explicación: estas líneas de código cargan una imagen según el elemento seleccionado en el cuadro de lista.

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

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

Private Sub CommandButton1_Click()

Dim emptyRow As Long

'Make Sheet1 active
Sheet1.Activate

'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

'Transfer information
Cells(emptyRow, 1).Value = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value

If OptionButton1.Value = True Then
    Cells(emptyRow, 3).Value = "Male"
Else
    Cells(emptyRow, 3).Value = "Female"
End If

Cells(emptyRow, 4).Value = ListBox1.Value

'Close Userform
Unload Me

End Sub

Explicación: primero, activamos Sheet1. A continuación, determinamos emptyRow. La variable emptyRow es la primera fila vacía y aumenta cada vez que se agrega un registro. A continuación, transferimos la información del formulario de usuario a las columnas específicas de emptyRow. Finalmente, cerramos el formulario de usuario.

16. Salga del Editor de Visual Basic, ingrese las etiquetas que se muestran a continuación en la fila 1 y pruebe el formulario de usuario.

Resultado:

Probar el formulario de usuario

10/11 Completado! Obtenga más información sobre los formularios de usuario>
Siguiente capítulo: Rango