Está en la página 1de 13

Corporación Universitaria Iberoamericana

FUNDAMENTOS DE LA PROGRAMACIÓN

GENERACIÓN DE FORMULARIOS PARA REALIZAR APLICACIONES DESDE


VBA.

Docente: Andrea Huertas

Estudiante: Yeison Hernando Cortés Garzón


Tocancipá
17 de Junio 2019
INTRODUCION

En el siguiente trabajo veremos generación de formularios para realizar


aplicaciones desde VBA, desde la definición, su uso y todos los elementos que
participan en la generación de un formulario, realmente va a ser un tema muy
interesante los invito a disfrutar de el.
USERFORM

Los formularios en VBA o formularios en Excel son conocidos como Userform,


sirven para ejecutar operaciones como el registro, actualización, eliminación o
procesamiento de los datos existentes en Excel, o como una interfaz de usuario
desde la que se pueden ejecutar macros previamente existentes.

Para crear un formulario en Excel primero se debe ingresar a la Ficha Programador


o Desarrollador, luego de ello seleccionar la opción «Visual Basic», una vez que nos
encontremos en esta pantalla, sobre la ventana de Proyecto podemos realizar
un Click con el botón derecho y seleccionar «Userform», o ir al menú «Insertar» y
luego seleccionar «Userform».

Luego de ello aparecerá un formulario en Excel en blanco, desde el cual se podrá


añadir los elementos que se consideren necesarios desde el cuadro de
herramientas.
CONTROLES DE USERFORM
Sirve para seleccionar controles que hayamos
Seleccionar Objetos: insertado en el Userform.

Sirve para poner un título o un texto. Ejemplo:


Etiqueta (Label): Podemos poner un texto del tipo "Complete las
opciones a continuación" y ubicarlo en cualquier sitio
del Userform.
También podemos agregar títulos o descripciones al
resto de comandos que agreguemos al Userform.

Y este sirve para que un usuario introduzca Datos.


Ejemplo: Querremos que el usuario introduzca una
Cuadro de Texto Fecha o un Nombre (Que luego llevaremos a alguna
(Texto): celda de Excel).

Para continuar, este sirve para que un usuario elija una


Cuadro Combinado opción de una Lista. Ejemplo: Creamos una lista con
(ComBox): los meses de Enero a Diciembre para que el usuario
elija uno de ellos.

Bien, ahora este sirve para que un usuario rellene o


Cuadro de Lista elija varias opciones de una lista. Ejemplo: Creamos
(ListBox): una lista con regiones o ciudades y el usuario deberá
elegir una o varias de ellas.

Sirve para que un usuario active una determinada


Casilla (CheckBox): función. Ejemplo: Podemos hacer que al cerrar el
UserForm se imprima un reporte solo si la casilla de
selección esta tildada.
Sirve para que un usuario seleccione una opción
Botón de Opciones determinada entre varias posibilidades. Ejemplo:
(OptionButton): Querremos que el usuario indique, si es del sexo femenino
o masculino.
Y de todas las opciones solo se puede seleccionar una de
ellas.

Sirve para activar o desactivar alguna funcionalidad. Este


botón adopta el modo "Encendido"/"Apagado". Ejemplo:
Botón de Alternar
Querremos que el usuario defina su idioma, en modo
(ToggleButton): encendido español y en modo apagado inglés.

Sirve para agrupar elementos de un UserForm (Los


elementos se deben ubicar dentro del Frame (Marco)).
Ejemplo: Tenemos varios grupos de OptionButton y para
distinguirlo lo agrupamos con un Frame.
Marco (Frame): Además, si tenemos un grupo de opciones tipo
Masculino/Femenino, los agrupamos dentro de un Frame
(Marco). Si luego tenemos otro grupo de opciones del tipo
Mayor de Edad/Menor de edad los agrupamos dentro de
otro Frame (Marco).

Botón de Comando Es un simple Botón que nos permite ejecutar acciones.


(CommandButton): Ejemplo: Un Botón de Ayuda que ejecuta otro UserForm con
ayuda para el usuario.

Barra de Si tenemos una lista con muchos elementos el ScrollBar te


Desplazamiento permite navegarlos. Ejemplo: Tenemos una lista con 150
(ScrollBar): países, con el ScrollBar podemos subir y bajar por la lista de
los mismos utilizando las flechas de desplazamiento.
Permite aumentar o disminuir valores. Ejemplo: Tenemos
Botón de Numero una lista con tipos de interés y querremos que sean
(SpinButton): incrementadas o disminuidos en cantidades
predeterminadas desde el Botón de Numero.

Permite introducir imágenes en el UserForm. Ejemplo:


Imagen (Image): Querremos introducir una Fotografía como fondo del
Userform para darle un aspecto más profesional.

Permite hacer referencia a una celda de Excel. Ejemplo:


Querremos que el usuario seleccione un dato que
RefEdit: previamente fue introducido en una celda de Excel.
Haciendo doble clic en cada control se abrirá una ventana
donde podremos escribir y asociarle una Macro.

El siguiente es un ejemplo de UserForm:

Primero declaramos las variables:

Dim n As Integer
Dim mensajes As String
Dim PromedioSimple As Double, PromedioPonderado As Double
Dim UltimaFila As Integer
Dim i, posición As Integer
Dim mayor promedio As Double
Dim aAprobados, cDesaprobados As Integer
Dim n1, n2, n3, c1, c2, c3, todos como Integer
Dim Alumno As String
Dim PromedioPonderado, PromedioSimple As Double

Estos primeros bloques los debemos digitar en el objeto General que aparece
cliqueando en el desplegable de la ventana de trabajo de nuestro UserForm

 Iniciamos el programa digitando nuestra primera variable:

Dim n As Integer
 En el primer bloque definimos UltimaFila, este detecta la última fila en uso
para a partir de allí insertar la información.

Function determinaUltimaFila() As Integer


Ufila = Sheets(1).Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
determinaUltimaFila = Ufila
End Function

 El siguiente procedimiento limpia los controles de UserForm para que queden


disponibles para nuevos datos.

Sub limpiaControles()
txtAlumno.Text = ""
txtN1.Text = ""
txtN2.Text = ""
txtN3.Text = ""
txtC1.Text = ""
txtC2.Text = ""
txtC3.Text = ""
txtAlumno.SetFocus
End Sub

 Está función nos permite ingresar los valores.

Function valida() As String


Dim mensajes As String
If Len(Trim(txtAlumno.Text)) = 0 Then
mensaje = "Nombre del Alumno"
txtAlumno = SetFocus
ElseIf Not IsNumeric(txtN1.Text) Or CInt(txtN1.Text) > 50 Or CInt(txtN1.Text)
< 0 Then
mensaje = "Nota1"
txtN1.SetFocus
ElseIf Not IsNumeric(txtN2.Text) Or CInt(txtN2.Text) > 50 Or CInt(txtN2.Text)
< 0 Then
mensaje = "Nota2"
txtN2.SetFocus
ElseIf Not IsNumeric(txtN3.Text) Or CInt(txtN3.Text) > 50 Or CInt(txtN3.Text)
< 0 Then
mensaje = "Nota3"
txtN3.SetFocus
ElseIf Not IsNumeric(txtC1.Text) Or CInt(txtC1.Text) > 50 Or CInt(txtC1.Text)
< 0 Then
mensaje = "Credito1"
txtC1.SetFocus
ElseIf Not IsNumeric(txtC2.Text) Or CInt(txtC2.Text) > 50 Or CInt(txtC2.Text)
< 0 Then
mensaje = "Credito2"
txtC2.SetFocus
ElseIf Not IsNumeric(txtC3.Text) Or CInt(txtC3.Text) > 50 Or CInt(txtC3.Text)
< 0 Then
mensaje = "Credito3"
txtC3.SetFocus
Else
mensaje = ""
End If
valida = mensaje
End Function

Estos siguientes bloques de programación los iniciamos cliqueando doble en cada


uno de los controles del UserForm.

 Doble clic en el control llamado Registrar, este nos permite registrar la


información que estamos digitando en nuestros cuadros de texto.

Private Sub btnRegistrar_Click()


If valida = "" Then
Dim Alumno As String, n1 As Integer, n2 As Integer, n3 As Integer, c1 As
Integer, c2 As Integer, c3 As Integer
Alumno = txtAlumno.Text
n1 = CInt(txtN1.Text)
n2 = CInt(txtN2.Text)
n3 = CInt(txtN3.Text)
c1 = CInt(txtC1.Text)
c2 = CInt(txtC2.Text)
c3 = CInt(txtC3.Text)

Dim PromedioSimple As Double, PromedioPonderado As Double


PromedioSimple = (n1 + n2 + n3) / 3
PromedioPonderado = (n1 * c1 + n2 * c2 + n3 * c3) / (c1 + c2 + c3)
n=n+1
lstNumero.AddItem n
lstAlumno.AddItem UCase(Alumno)
lstN1.AddItem n1
lstN2.AddItem n2
lstN3.AddItem n3
lstC1.AddItem c1
lstC2.AddItem c2
lstC3.AddItem c3
lstPromedioS.AddItem Format(PromedioSimple, "0,00")
lstPromedioP.AddItem Format(PromedioPonderado, "0,00")
Call limpiaControles
Else
MsgBox "El error se encuentra en..." & valida
End If

End Sub

 Doble clic en el control llamado Enviar, con este enviamos la información a


la hoja de trabajo en Excel

Private Sub btnEnviar_Click()


Dim Ufila As Integer
Ufila = determinaUltimaFila
For i = 0 To lstNumero.ListCount - 1
Sheet (1), Cells(Ufila + i, 2).Value = listNumero.List(i)
Sheet (1), Cells(Ufila + i, 3).Value = listAlumno.List(i)
Sheet (1), Cells(Ufila + i, 4).Value = listPromedioS.List(i)
Sheet (1), Cells(Ufila + i, 5).Value = listPromedioP.List(i)
End Sub

 Doble clic en el control llamado Procesar, este procesa la información para


posteriormente insertarla en el marco de Estadística.

Private Sub btnProcesar_Click()


On Error GoTo Imprevisto
Dim mayorPromedio As Double, i As Integer, posicion As Integer
For i = 0 To lstPromedioP.ListCount - 1
If CInt(lstPromedioP.List(i)) > mayorPromedio Then
mayorPromedio = CInt(lstPromedioP.List(i))
posicion = i
End If
Next
lblPromedio.Caption = mayorPromedio
lblMejorAlumno.Caption = lst.List(posicion)
Dim CAprobados As Integer, CDesaprobados As Integer
For i = 0 To lstPromedioS.ListCount - 1
If CInt(lstPromedioS.List(i)) > 10 Then
CAprobados = CAprobados + 1
End If
Next
lblAprobados.Caption = CAprobados
lblCDesaprobados.Caption = CDesaprobados
Exit Sub
Imprevisto:
MsgBox "Error en el proceso..!!"
End Sub
 Doble clic en el control llamado Salir, que como su nombre lo dice, sale de
la aplicación.

Private Sub btnSalir_Click()


End
End Sub

 Doble clic en el control llamado Limpiar, este limpia la información de los


cuadros y los deja disponibles para digitar los siguientes pero, esta función
ya está programada con anterioridad en este bloque solo la llamamos.

Private Sub btnLimpiar_Click()


Call limpiaControles
End Sub
CONCLUCIONES

Con el desarrollo de este trabajo me he dado cuenta que la atención al detalle que
requiere es máxima, la concentración, la tolerancia a la frustración, ha sido uno de
los trabajos más extenuantes que he tenido, pero lo importante es no dejarnos
vencer por los obstáculos y perseverar hasta logra el objetivo.

Fue una experiencia para recordar y aunque no lo logre por completo, estoy
satisfecho de haber entregado el máximo, es un proceso de formación con mucha
práctica y hay que seguir.

Agradezco a la profesora Andrea Huertas por sus grades aporte, su gran


compromiso como educadora sé que está en sus manos formar excelentes
profesionales y con su forma de infundir conocimiento lo logra, le ofrezco disculpas
por no haber cumplido con este objetivo.
REFERENCIAS

Userform:
https://www.excel-avanzado.com/userform-en-excel
Controles de Userform
https://aplicaexcelcontable.com/blog/programar-en-excel-controles-de-un-
userform.html

También podría gustarte