VBA - Formularios de usuario

UN User Formes un cuadro de diálogo personalizado que hace que la entrada de datos del usuario sea más controlable y más fácil de usar para el usuario. En este capítulo, aprenderá a diseñar un formulario simple y agregar datos a Excel.

Step 1- Navegue a la ventana de VBA presionando Alt + F11 y navegue al menú "Insertar" y seleccione "Formulario de usuario". Al seleccionar, el formulario de usuario se muestra como se muestra en la siguiente captura de pantalla.

Step 2 - Diseñar los formularios utilizando los controles dados.

Step 3- Después de agregar cada control, los controles deben ser nombrados. El título corresponde a lo que aparece en el formulario y el nombre corresponde al nombre lógico que aparecerá cuando escriba el código VBA para ese elemento.

Step 4 - A continuación se muestran los nombres de cada uno de los controles agregados.

Controlar Nombre lógico Subtítulo
Desde frmempform Formulario de empleado
Caja de etiqueta de identificación de empleado empid ID de empleado
cuadro de etiqueta de nombre primer nombre Primer nombre
Cuadro de etiqueta de apellido apellido Apellido
dob caja de etiquetas dob Fecha de nacimiento
Caja de etiquetas de correo electrónico identificación del correo Identificación de correo
Caja de etiquetas para titulares de pasaportes Titular de pasaporte Titular de pasaporte
Cuadro de texto de ID de emp txtempid No aplica
Cuadro de texto de nombre txtfirstname No aplica
Cuadro de texto de apellido txtlastname No aplica
Cuadro de texto de ID de correo electrónico txtemailid No aplica
Cuadro combinado de fecha cmbdate No aplica
Cuadro combinado de mes cmbmonth No aplica
Cuadro combinado de año cmbyear No aplica
Sí Botón de radio radio sí si
Sin botón de radio radiono No
Botón de enviar btnsubmit Enviar
Botón Cancelar btncancel Cancelar

Step 5 - Agregue el código para el evento de carga del formulario haciendo clic con el botón derecho en el formulario y seleccionando 'Ver código'.

Step 6 - Seleccione 'Formulario de usuario' en el menú desplegable de objetos y seleccione el método 'Inicializar' como se muestra en la siguiente captura de pantalla.

Step 7 - Al cargar el formulario, asegúrese de que los cuadros de texto estén limpios, los cuadros desplegables estén llenos y los botones de radio estén restablecidos.

Private Sub UserForm_Initialize()
   'Empty Emp ID Text box and Set the Cursor 
   txtempid.Value = ""
   txtempid.SetFocus
   
   'Empty all other text box fields
   txtfirstname.Value = ""
   txtlastname.Value = ""
   txtemailid.Value = ""
   
   'Clear All Date of Birth Related Fields
   cmbdate.Clear
   cmbmonth.Clear
   cmbyear.Clear
   
   'Fill Date Drop Down box - Takes 1 to 31
   With cmbdate
      .AddItem "1"
      .AddItem "2"
      .AddItem "3"
      .AddItem "4"
      .AddItem "5"
      .AddItem "6"
      .AddItem "7"
      .AddItem "8"
      .AddItem "9"
      .AddItem "10"
      .AddItem "11"
      .AddItem "12"
      .AddItem "13"
      .AddItem "14"
      .AddItem "15"
      .AddItem "16"
      .AddItem "17"
      .AddItem "18"
      .AddItem "19"
      .AddItem "20"
      .AddItem "21"
      .AddItem "22"
      .AddItem "23"
      .AddItem "24"
      .AddItem "25"
      .AddItem "26"
      .AddItem "27"
      .AddItem "28"
      .AddItem "29"
      .AddItem "30"
      .AddItem "31"
   End With
   
   'Fill Month Drop Down box - Takes Jan to Dec
   With cmbmonth
      .AddItem "JAN"
      .AddItem "FEB"
      .AddItem "MAR"
      .AddItem "APR"
      .AddItem "MAY"
      .AddItem "JUN"
      .AddItem "JUL"
      .AddItem "AUG"
      .AddItem "SEP"
      .AddItem "OCT"
      .AddItem "NOV"
      .AddItem "DEC"
   End With
   
   'Fill Year Drop Down box - Takes 1980 to 2014
   With cmbyear
      .AddItem "1980"
      .AddItem "1981"
      .AddItem "1982"
      .AddItem "1983"
      .AddItem "1984"
      .AddItem "1985"
      .AddItem "1986"
      .AddItem "1987"
      .AddItem "1988"
      .AddItem "1989"
      .AddItem "1990"
      .AddItem "1991"
      .AddItem "1992"
      .AddItem "1993"
      .AddItem "1994"
      .AddItem "1995"
      .AddItem "1996"
      .AddItem "1997"
      .AddItem "1998"
      .AddItem "1999"
      .AddItem "2000"
      .AddItem "2001"
      .AddItem "2002"
      .AddItem "2003"
      .AddItem "2004"
      .AddItem "2005"
      .AddItem "2006"
      .AddItem "2007"
      .AddItem "2008"
      .AddItem "2009"
      .AddItem "2010"
      .AddItem "2011"
      .AddItem "2012"
      .AddItem "2013"
      .AddItem "2014"
   End With
   
   'Reset Radio Button. Set it to False when form loads.
   radioyes.Value = False
   radiono.Value = False

End Sub

Step 8- Ahora agregue el código al botón Enviar. Al hacer clic en el botón enviar, el usuario debería poder agregar los valores a la hoja de trabajo.

Private Sub btnsubmit_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 = txtempid.Value
   Cells(emptyRow, 2).Value = txtfirstname.Value
   Cells(emptyRow, 3).Value = txtlastname.Value
   Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
   Cells(emptyRow, 5).Value = txtemailid.Value
  
   If radioyes.Value = True Then
      Cells(emptyRow, 6).Value = "Yes"
   Else
      Cells(emptyRow, 6).Value = "No"
   End If
End Sub

Step 9 - Agregue un método para cerrar el formulario cuando el usuario haga clic en el botón Cancelar.

Private Sub btncancel_Click()
   Unload Me
End Sub

Step 10- Ejecute el formulario haciendo clic en el botón "Ejecutar". Ingrese los valores en el formulario y haga clic en el botón 'Enviar'. Automáticamente, los valores fluirán hacia la hoja de trabajo como se muestra en la siguiente captura de pantalla.