Icono del sitio Tecpro Digital

Formulario en Excel usando VBA y macros

Formulario en Excel usando VBA y macros

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

INSERTAMOS LOS CONTROLES DE FORMULARIO

Propiedades para los 5 formatos de texto

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.

Propiedades para los 2 botones de opción

Propiedad para el cuadro combinado

Para insertar elementos dentro del cuadro combinado, haremos lo siguiente:

Propiedades para los botones

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

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.

Salir de la versión móvil