/ / Excel VBA Userform

Excel VBA Userform

Añadir los controles | Mostrar el formulario de usuario | Asignar las macros | Probar el formulario de usuario

Este capítulo te enseña cómo crear un Excel VBA Userform. El formulario de usuario que vamos a crear se ve de la siguiente manera:

Excel VBA Userform

Añadir los controles

Para agregar los controles al 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 controles enumerados en la tabla a continuación. 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 texto haciendo clic en TextBox en el cuadro de herramientas. A continuación, puede arrastrar un cuadro de texto en el formulario de usuario. Cuando llegue al cuadro del Coche, recuerde dibujar este cuadro primero antes de colocar los dos botones de opción en él.

4. Cambie los nombres y las leyendas de los controles de acuerdo con la tabla a continuación. 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. Esto hará que su código sea más fácil de leer. Para cambiar los nombres y títulos de los controles, haga clic en Ver, Ventana de propiedades y haga clic en cada control.

Controlar Nombre Subtítulo
Formulario de usuario DinnerPlannerUserForm Planificador de la cena
Caja de texto NameTextBox
Caja de texto PhoneTextBox
Cuadro de lista CityListBox
Caja combo DinnerComboBox
Casilla de verificación DateCheckBox1 13 de junio
Casilla de verificación DateCheckBox2 20 de junio
Casilla de verificación DateCheckBox3 27 de junio
Cuadro CarFrame Coche
Botón de opción CarOptionButton1
Botón de opción CarOptionButton2 No
Caja de texto MoneyTextBox
Botón de giro MoneySpinButton
Botón de comando OKButton DE ACUERDO
Botón de comando ClearButton Claro
Botón de comando CancelarBotón Cancelar
7 etiquetas No hay necesidad de cambiar Nombre:, Número de teléfono:, etc.

Nota: un cuadro combinado es una lista desplegable desde donde un usuario puede seleccionar un elemento o completar su propia elección. Solo se puede seleccionar uno de los botones de opción.

Mostrar el formulario de usuario

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()

DinnerPlannerUserForm.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.

1. Abra el Editor de Visual Basic.

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

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

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

Private Sub UserForm_Initialize()

"Empty NameTextBox
NameTextBox.Value = ""

"Empty PhoneTextBox
PhoneTextBox.Value = ""

"Empty CityListBox
CityListBox.Clear

"Fill CityListBox
With CityListBox
    .AddItem "San Francisco"
    .AddItem "Oakland"
    .AddItem "Richmond"
End With

"Empty DinnerComboBox
DinnerComboBox.Clear

"Fill DinnerComboBox
With DinnerComboBox
    .AddItem "Italian"
    .AddItem "Chinese"
    .AddItem "Frites and Meat"
End With

"Uncheck DataCheckBoxes

DateCheckBox1.Value = False
DateCheckBox2.Value = False
DateCheckBox3.Value = False

"Set no car as default
CarOptionButton2.Value = True

"Empty MoneyTextBox
MoneyTextBox.Value = ""

"Set Focus on NameTextBox
NameTextBox.SetFocus

End Sub

Explicación: los cuadros de texto se vacían, los cuadros de lista y los cuadros combinados se rellenan, los cuadros de verificación no están seleccionados, etc.

Asignar las macros

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.

1. Abra el Editor de Visual Basic.

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

3. Haga doble clic en el botón de giro del dinero.

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

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

Explicación: esta línea de código actualiza el cuadro de texto cuando usa el botón de giro.

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

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

Private Sub OKButton_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 = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value

If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption

If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption

If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption

If CarOptionButton1.Value = True Then
    Cells(emptyRow, 6).Value = "Yes"
Else
    Cells(emptyRow, 6).Value = "No"
End If

Cells(emptyRow, 7).Value = MoneyTextBox.Value

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. Finalmente, transferimos la información del formulario de usuario a las columnas específicas de emptyRow.

7. Haga doble clic en el botón Borrar.

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

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

Explicación: esta línea de código llama al Sub UserForm_Initialize cuando hace clic en el botón Borrar.

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

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

Private Sub CancelButton_Click()

Unload Me

End Sub

Explicación: esta línea de código cierra el formulario de usuario cuando hace clic en el botón Cancelar.

Probar el formulario de usuario

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

Lea también: