Este capítulo le enseña cómo crear un UserForm de VBA Excel. El formulario de usuario que se va a crear un aspecto de la siguiente manera:

Excel VBA Userform

Añadir los controles

Para agregar los controles para el formulario de usuario, ejecute los siguientes pasos.

  1. Abra el `enlace: / VBA-crear a un macro # visual-basic-editor de [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 controles enumerados en la siguiente tabla. 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 de texto, haga clic en Cuadro de texto del cuadro de herramientas. A continuación, puede arrastrar un cuadro de texto en el formulario de usuario. Cuando llegue al bastidor del coche, recuerde que debe dibujar este marco primero antes de colocar los dos botones de opción en el mismo.

  2. Cambie los nombres y títulos de los controles de acuerdo con la siguiente tabla. 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. 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 Propiedades y haga clic en cada control.

Control

Name

Caption

Userform

DinnerPlannerUserForm

Dinner Planner

Text Box

NameTextBox

Text Box

PhoneTextBox

List Box

CityListBox

Combo Box

DinnerComboBox

Check Box

DateCheckBox1

June 13th

Check Box

DateCheckBox2

June 20th

Check Box

DateCheckBox3

June 27th

Frame

CarFrame

Car

Option Button

CarOptionButton1

Yes

Option Button

CarOptionButton2

No

Text Box

MoneyTextBox

Spin Button

MoneySpinButton

Command Button

OKButton

OK

Command Button

ClearButton

Clear

Command Button

CancelButton

Cancel

7 Labels

No need to change

Name:, Phone Number:, etc.

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

Mostrar el formulario de usuario

Para mostrar el formulario de usuario, colocar un enlace: / VBA-crear a un macro-# botón de comando [botón de comando] en su hoja de trabajo y añadir la siguiente línea de código:

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.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 `enlace: / VBA-crear a un macro # visual-basic-editor de [Editor de Visual Basic] ‘.

  2. En el Explorador de proyectos, haga clic en DinnerPlannerUserForm y luego 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. Añadir 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: cuadros de texto se vacían, cuadros de lista y cuadros combinados están llenos, casillas de verificación están desactivadas, etc.

Asignar las macros

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. Abra el `enlace: / VBA-crear a un macro # visual-basic-editor de [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. Añadir 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 se utiliza el botón de girar.

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

  2. Añadir 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: 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. Por último, transferimos la información del formulario de usuario a las columnas específicas de emptyRow.

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

  2. Añadir 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 se hace clic en el botón Borrar.

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

  2. Agregar 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 al hacer clic en el botón Cancelar.

Prueba el formulario de usuario

Cierre el 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