¡Hola a todos! Vamos a revisar hoy un tema muy interesante de Excel conocido como Formularios o UserForm, un tipo de programación visual VBA con la cual podremos obtener información de nuestros usuarios de manera visual. Para esta ocasión usaremos algo no tan técnico, pero si muy divertido (jejeje).
¿De dónde nació?
Platicando con una conocida (omito nombres) me decía que no sabia porque nunca conseguia al “hombre de sus sueños”, a lo cual me enlisto las características que buscaba (espero que en broma) y me di a la tarea de crearle un formulario para evaluar a sus pretendientes con Excel.
¿Como se forma?
Lo primero es crear nuestra UserForm, para esto iremos a VisualBasic y en nuestro libro daremos click derecho para seleccionar “Insertar_UserForm”
Una vez creada, iremos insertando los objetos de nuestra UserForm como se muestra en la tabla de abajo:
USERFORM | NAME | CAPTION |
OPTIONBUTTON | CARROYES | SI |
OPRIONBUTTON | CARRONO | NO |
OPRIONBUTTON | TRABAJOSI | SI |
OPRIONBUTTON | TRABAJONO | NO |
LISTBOX | VIVIENDA | |
TEXTBOX | INGRESO | |
TEXTBOX | HIJOS | |
SPINBUTTON | CTRLHIJOS | |
COMBOBOX | ZONA | |
FRAME | FRAME1 | CARRO |
FRAME | FRAME2 | TRABAJO |
COMMANDBUTTON | INICIO | INICIAR |
COMMANDBUTTON | SALIR | SALIR |
COMMANDBUTTON | ENVIAR | ENVIAR |
Una vez colocados en su respectivo orden vamos a ver el código que los hara activar:
Private Sub userform_initialize() ' MUESTRA DESACTIVADOS LAS OPCIONES DE CARRO CARROYES.Value = False CARRONO.Value = False ' MUESTRA DESACTIVADOS LAS OPCIONES DE TRABAJO TRABAJOSI.Value = False TRABAJONO.Value = False ' ANADE ELEMENTOS DE OPCION A CASA VIVIENDA.Clear With VIVIENDA .AddItem "PROPIA" .AddItem "RENTADA" .AddItem "VIVO CON MIS PAPAS" End With ' MUESTRA SIN VALORES LAS OPCIONES HIJOS E INGRESO MENSUAL INGRESO.Value = "" HIJOS.Value = "" ' ANADE OPCIONES A LA ZONA DONDE VIVE ZONA.Clear With ZONA .AddItem "NORESTE" .AddItem "NORTE" .AddItem "NOROESTE" .AddItem "CENTRO" .AddItem "ORIENTE" .AddItem "PONIENTE" .AddItem "SURESTE" .AddItem "SUR" .AddItem "SUROESTE" End With End Sub
Ahora, vamos a hacer que los demás botones funciones. Vamos primero con el contador de hijos:
Private Sub CTRLHIJOS_Change() HIJOS.Text = CTRLHIJOS.Value End Sub
Con este código haremos que cada cambio de valor del control se refleje como Texto en la caja de texto llamada hijos.
Ahora, para que los botones funciones utilizaremos los siguientes codigos:
BOTON INICIAR:
Private Sub INICIO_Click() Call userform_initialize End Sub
BOTON SALIR:
Private Sub SALIR_Click() Unload.Me End Sub
BOTON ENVIAR:
Private Sub ENVIAR_Click() ' VARIABLES Dim rngcopy As Long Dim i As Integer ' DEFINIENDO EL RANGO DE LA BASE Worksheets("baseligues").Activate rngcopy = WorksheetFunction.CountA(Range("A:A")) + 1 ' EVALUACION DE CARRO If CARROYES.Value = True Then Cells(rngcopy, 1).Value = 1 If CARRONO.Value = True Then Cells(rngcopy, 1).Value = 0 ' EVALUACION DE TRABAJO If TRABAJOSI.Value = True Then Cells(rngcopy, 2).Value = 1 If TRABAJONO.Value = True Then Cells(rngcopy, 2).Value = 0 ' EVALUACION DE VIVIENDA If VIVIENDA.Value = "PROPIA" Then Cells(rngcopy, 3).Value = 2 If VIVIENDA.Value = "RENTADA" Then Cells(rngcopy, 3).Value = 1 If VIVIENDA.Value = "VIVO CON MIS PAPAS" Then Cells(rngcopy, 3).Value = 0 ' EVALUACION DE INGRESOS If INGRESO.Value < 8000 Then Cells(rngcopy, 4).Value = 0 If INGRESO.Value >= 8000 And INGRESO.Value < 20000 Then Cells(rngcopy, 4).Value = 1 If INGRESO.Value >= 20000 Then Cells(rngcopy, 4).Value = 2 ' EVALUACION DE HIJOS If HIJOS.Value > 0 Then Cells(rngcopy, 5).Value = 0 Else Cells(rngcopy, 5).Value = 1 ' EVALUACION DE ZONA DONDE VIVE If ZONA.Value = "NORESTE" Or ZONA.Value = "NORTE" Or ZONA.Value = "NOROESTE" Then Cells(rngcopy, 6).Value = 0 If ZONA.Value = "CENTRO" Or ZONA.Value = "ORIENTE" Or ZONA.Value = "PONIENTE" Then Cells(rngcopy, 6).Value = 1 If ZONA.Value = "SURESTE" Or ZONA.Value = "SUR" Or ZONA.Value = "SUROESTE" Then Cells(rngcopy, 6).Value = 2 ' PUNTUACION DEL SUJETO i = WorksheetFunction.Sum(Cells(rngcopy, 1), Cells(rngcopy, 2), Cells(rngcopy, 3), Cells(rngcopy, 4), Cells(rngcopy, 5), Cells(rngcopy, 6)) ' REGRESANDO A HOJA ORIGINAL Worksheets("EVALUAR").Activate ' MENSAJE DE SUGERENCIA If i < 3 Then MsgBox "Evaluacion lista" & vbCrLf & "Botalo, no te conviene", vbOKOnly, "Resultado Evaluacion" If i >= 3 And i < 7 Then MsgBox "Evaluacion lista" & vbCrLf & "Tiene lo suyo, consideralo", vbOKOnly, "Resultado Evaluacion" If i >= 7 Then MsgBox "Evaluacion lista" & vbCrLf & "Es el bueno, pidele pack!", vbOKOnly, "Resultado Evaluacion" 'CERRANDO USERFORM Unload Me End Sub
Todo el código del botón Enviar sirve para generar una evaluación y dejar registro del sujeto ligado a evaluar, además de hacer una suma de puntaciones y recomendar si vale la pena seguir hablándole o no.
¡Ahora mi amiga no perderá tiempo con alguien que no le interesa! Si bien el libro solo es para molestarla, la técnica usada puede funcionar para muchas situaciones de la vida laboral, pruébalo descargando aquí y muestra a tus ligues que también puedes evaluarlos y conseguir el amor (interesado) de tu vida.
La forma es mejorable, podrías solo guardar en variables VBA y no usar la tabla en la otra hoja para realizar la evaluación. Practícalo y deja tus comentarios para seguir creciendo y creando un mundo de Excel más CUTE.