Aprende a crear un formulario con macros en excel para capturar datos y guardarlos en otra hoja de excel en forma de base de datos.
Al final de esta entrada, encontrarás el archivo de descarga del ejemplo que estaremos realizando a continuación.
Para comenzar, vamos a tener como referencia la imagen de la hoja Formulario:
Para la realización de este ejemplo, crearemos 2 hojas las cuales tendrán por nombre: Formulario y Datos.
FORMATO DEL DISEÑO DE LA HOJA FORMULARIO
- Texto del encabezado del formulario: aplicamos combinar celdas las filas 2 y 3 y columnas desde B hasta G. El color de fondo es azul y letras en negrita color blanco.
- Nombre: Escribimos el texto en la fila 5 y combinamos celdas 5B y 5C, letras en color negrita.
- Apellido Paterno: Escribimos el texto en la fila 6 y combinamos celdas 6B y 6C, letras en color negrita.
- Apellido Materno: Escribimos el texto en la fila 7 y combinamos celdas 7B y 7C, letras en color negrita.
- Género: Escribimos el texto en la fila 8 y combinamos celdas 8B y 8C, letras en color negrita.
- Edad: Escribimos el texto en la fila 9 y combinamos celdas 9B y 9C, letras en color negrita.
- Estado Civil: Escribimos el texto en la fila 10 y combinamos celdas 10B y 10C, letras en color negrita.
- Estado Civil: Escribimos el texto en la fila 11 y combinamos celdas 11B y 11C, letras en color negrita.
INSERTAMOS LOS CONTROLES DE FORMULARIO
- Ir a la pestaña Programador o Desarrollador
- Clic en el ícono de insertar
- Insertaremos 5 cuadros de texto para Nombre, Apellido Paterno, Apellido Materno, Edad y Teléfono.
- Para la celda Género, insertaremos 2 botones de opción
- Para la celda de Estado Civil, insertaremos un cuadro combinado.
- Insertar 2 botones en la parte inferior del formulario.
Propiedades para los 5 formatos de texto
- Para activar propiedades, haz clic en el primer cuadro de texto que has insertado, ir a la pestaña Programador o Desarrollador, clic en el ícono de propiedades.
RECUERDA: Para poder trabajar con las propiedades y cualquier formato que le queremos dar a los controles de formulario, el Modo Diseño debe estar seleccionado.
- Para el cuadro de texto de Nombre: en la barra de propiedades en Name escribir txtNombre
- Para el cuadro de texto de Apellido Paterno: en la barra de propiedades en Name escribir txtApaterno
- Similar para el cuadro de texto de Apellido Materno: en la barra de propiedades en Name escribir txtAmaterno
- Para el cuadro de texto de Edad: en la barra de propiedades en Name escribir txtEdad
- Para el cuadro de texto de Teléfono: en la barra de propiedades en Name escribir txtTelefono
Propiedades para los 2 botones de opción
- Para la opción de Masculino: en la barra de propiedades en Name escribir OptMasculino y en Caption escribir Masculino.
- Para la opción de Femenino: en la barra de propiedades en Name escribir OptFemenino y en Caption escribir Femenino.
Propiedad para el cuadro combinado
Para insertar elementos dentro del cuadro combinado, haremos lo siguiente:
- Elige una celda cualquiera para crear el primer elemento del cuadro combinado, para este ejemplo se eligió la celda M1 y Escribimos Soltero(a), M2 y Escribimos Casado(a), M3 y Escribimos Divorciado(a) M4 y Escribimos Viudo(a).
- En propiedades del cuadro combiando cambiaremos lo siguiente: En Name escribir cmbEcivil y en ListFillRange escribir M1:M4
Propiedades para los botones
- Para el botón de Guardar en la barra de propiedades en Name escribir btnGuardar y en Caption escribir Guardar.
- Para el botón de Limpiar en la barra de propiedades en Name escribir btnLimpiar y en Caption escribir Limpiar.
FORMATO DEL DISEÑO DE LA HOJA DATOS
Después de haber terminado con el diseño del formulario, ahora tenemos que crear una tabla en la hoja Datos donde se pueda capturar los datos ingresados en el formulario, para ello es necesario crear el siguiente rango de datos, tal como se muestra en la siguiente imagen:
El diseño es súper sencillo de hacerlo, crea los 8 encabezados que observas en la imagen, el color de fondo será azul, letras en negrita color blanco.
Luego selecciona las celdas hasta donde deseas dar bordes, para así de esta manera tener una tabla.
CÓDIGO EN VBA PARA CREAR MACROS
Para el botón btnGuardar
Private Sub btnGuardar_Click()
Application.ScreenUpdating = False
Dim iRow As Long
iRow = Sheets("Datos").Range("A1048576").End(xlUp).Row + 1
If validarform = True Then
With ThisWorkbook.Sheets("Datos")
.Range("A" & iRow).Value = iRow - 1
.Range("B" & iRow).Value = txtNombre.Value
.Range("C" & iRow).Value = txtApaterno.Value
.Range("D" & iRow).Value = txtAmaterno.Value
.Range("E" & iRow).Value = IIf(OptMasculino.Value = True, "Masculino", "Femenino")
.Range("F" & iRow).Value = txtEdad.Value
.Range("G" & iRow).Value = cmbEcivil.Text
.Range("H" & iRow).Value = txtTelefono.Value
End With
Call limpiar
Else
Application.ScreenUpdating = True
Exit Sub
End If
Application.ScreenUpdating = True
End Sub
Para el botón btnLimpiar
Private Sub btnLimpiar_Click()
Dim i As Integer
i = MsgBox("¿Tú quieres limpiar los campos?", vbQuestion + vbYesNo + vbDefaultButton2, "Limpiar formulario")
If i = vbYes Then
Call limpiar
End If
End Sub
Código para la función limpiar
Function limpiar()
Application.ScreenUpdating = False
txtNombre.Value = ""
txtNombre.BackColor = vbWhite
OptMasculino.Value = False
OptFemenino.Value = False
cmbEcivil.Text = ""
cmbEcivil.BackColor = vbWhite
txtApaterno.Value = ""
txtApaterno.BackColor = vbWhite
txtAmaterno.Value = ""
txtAmaterno.BackColor = vbWhite
txtEdad.Value = ""
txtEdad.BackColor = vbWhite
txtTelefono.Value = ""
txtTelefono.BackColor = vbWhite
End Function
Código para la función validarform
Function validarform() As Boolean
txtNombre.BackColor = vbWhite
cmbEcivil.BackColor = vbWhite
txtApaterno.BackColor = vbWhite
txtAmaterno.BackColor = vbWhite
txtEdad.BackColor = vbWhite
txtTelefono.BackColor = vbWhite
validarform = True
If Trim(txtNombre.Value) = "" Then
MsgBox "El nombre no puede quedar en blanco", vbOKOnly + vbInformation, "Name"
txtNombre.BackColor = vbRed
txtNombre.Activate
validarform = False
ElseIf OptMasculino.Value = False And OptFemenino.Value = False Then
MsgBox "Por favor selecciona su opción", vbOKOnly + vbInformation, "Género"
validarform = False
ElseIf cmbEcivil.Text <> "Soltero(a)" And cmbEcivil.Text <> "Casado(a)" And _
cmbEcivil.Text <> "Divorciado(a)" And cmbEcivil.Text <> "Viudo(a)" Then
MsgBox "Por favor seleccione su estado civil", vbOKOnly + vbInformation, "EstadoCivil"
cmbEcivil.BackColor = vbRed
cmbEcivil.Activate
validarFOR = False
ElseIf Trim(txtApaterno.Value) = "" Then
MsgBox "El Apellido paterno no puede quedar en blanco", vbOKOnly + vbInformation, "ApellidoPaterno"
txtApaterno.BackColor = vbRed
txtApaterno.Activate
validarform = False
ElseIf Trim(txtAmaterno.Value) = "" Then
MsgBox "El Apellido materno no puede quedar en blanco", vbOKOnly + vbInformation, "ApellidoMaterno"
txtAmaterno.BackColor = vbRed
txtAmaterno.Activate
validarform = False
ElseIf Trim(txtEdad.Value) = "" Then
MsgBox "La edad no puede quedar en blanco", vbOKOnly + vbInformation, "Edad"
txtEdad.BackColor = vbRed
txtEdad.Activate
validarform = False
ElseIf Trim(txtTelefono.Value) = "" Then
MsgBox "El teléfono no puede quedar en blanco", vbOKOnly + vbInformation, "Telefono"
txtTelefono.BackColor = vbRed
txtTelefono.Activate
validarform = False
End If
End Function
GUARDAR EL DOCUMENTO EXCEL HABILITADO PARA MACROS
- Ir a Archivo
- Clic en Guardar como
- Escribe el nombre que tendrá tu documento y en la parte de abajo, en la lista desplegable selecciona la opción de: Libro de excel habilitado para macros.
Para descargar el material de apoyo con el que se trabajó para crear el formulario con macros en excel clic en el siguiente enlace: Formulario con VBA y Macros.
También te puede interesar la siguiente entrada: Crear una base de datos en Excel.