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

El Control de multipágina contiene dos páginas. En la página 1, el usuario puede llenar en su / su información personal. En la página 2, el usuario puede indicar qué pintar él / ella le gusta más.

Userform Page 1

Userform Page 2

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. Agregue el control de varias páginas, etiquetas, cajas de texto (primero en la parte superior, el segundo por debajo de la primera), marco, botones de opción (primero a la izquierda, el segundo a la derecha), cuadro de lista, el control de imagen y botón de comando. Una vez que esto se ha completado, el resultado debe ser coherente con la versión vacía del formulario de usuario mostrado anteriormente. Por ejemplo, crear un control de varias páginas haciendo clic en varias páginas de la caja de herramientas. A continuación, puede arrastrar un control de varias páginas en el formulario de usuario. Cuando llegue a la estructura de género, recuerde que debe dibujar este marco primero antes de colocar los dos botones de opción en el mismo.

  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 del botón pestañas formulario de usuario, de varias páginas, etiquetas, marco, botones de opción y de comandos, 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()

With ListBox1

.AddItem "Mountains"

.AddItem "Sunset"

.AddItem "Beach"

.AddItem "Winter"

End With

End Sub

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

Ahora hemos creado la primera parte del formulario de usuario. A pesar de que se ve bien ya, no pasará nada aún cuando seleccionamos un elemento del cuadro de lista o cuando haga clic en el botón Aceptar.

  1. Descargar las imágenes (parte derecha de esta página) y añadirlos a «C: \ test \»

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

  3. Haga doble clic en el cuadro de lista.

  4. Añadir las siguientes líneas de código:

Private Sub ListBox1_Click()

If ListBox1.ListIndex = 0 Then

Image1.Picture = LoadPicture("C:\test\Mountains.jpg")

End If

If ListBox1.ListIndex = 1 Then

Image1.Picture = LoadPicture("C:\test\Sunset.jpg")

End If

If ListBox1.ListIndex = 2 Then

Image1.Picture = LoadPicture("C:\test\Beach.jpg")

End If

If ListBox1.ListIndex = 3 Then

Image1.Picture = LoadPicture("C:\test\Winter.jpg")

End If

End Sub

Explicación: estas líneas de código carga una imagen en función de la opción seleccionada en el cuadro de lista.

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

  2. 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: en primer lugar, activamos Hoja1. A continuación, vamos a determinar emptyRow. El emptyRow variable es la primera fila vacía y aumenta cada vez que se agrega un registro. A continuación, transferir la información del formulario de usuario a las columnas específicas de emptyRow. Por último, se cierra el formulario de usuario.

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

Resultado:

Test the Userform