DESARROLLO DE APLICACIONES EN MICROSOFT® EXCEL
Juan Carlos Vergara Schmalbach y Víctor Manuel Quesada Ibargüen
Esta página muestra parte del texto pero sin formato.
Puede bajarse el libro completo en PDF comprimido ZIP (162 páginas, 1.85 Mb) pulsando aquí
Objetivo: Desarrollar una aplicación para el CONTROL DE VOTACIONES, empleando Visual Basic para Aplicaciones.
Primer paso: Diseño de la portada de la aplicación
Diseñe una portada distintiva relacionada con una campaña de elecciones. Incluya un botón denominado INICIAR mediante un hipervínculo que dirija al usuario a una hoja llamada REGISTRO.
En este caso, se eliminaron las líneas de división y encabezados, desmarcando la opción VER que se encuentra en la ficha DISEÑO DE PÁGINA en Office 2007 o en la ficha VISTA para Office 2010.
Segundo paso: Diseño de la plantilla para el registro de sufragios por mesas
Creé una tabla que contenga los siguientes campos:
Número (No.)
Nombre(s) (Máximo 20 caracteres)
Apellidos (Máximo 20 caracteres)
Cédula
Además, se incluirán dos botones denominados INGRESAR INSCRITO y BUSCAR. A diferencia de otros ejercicios de entregas anteriores, no se diseñará un formulario para realizar la búsqueda. En vez de esta opción, se colocarán los campos de búsqueda y resultados en el mismo formulario. La búsqueda se realizará por el número de CÉDULA, mostrando el(los) NOMBRE(S) y APELLIDOS en caso tal de que exista una coincidencia. Un ejemplo del diseño de la hoja podría ser como el que se muestra en la siguiente ilustración.
Tercer paso: Diseño del formulario principal para el ingreso de inscritos
Diseñe un formulario que contenga los campos sobre los datos personales de los inscritos e incluya un botón llamado INGRESAR, para efectuar el enlace entre el formulario y la hoja de cálculo (ver ilustración). Cambie la opción BACKCOLOR de los objetos y formulario para agregarle un poco más de vistosidad a la aplicación.
Modifique la opción MAXLENGTH de los TEXTBOX 1 y 2 para que admita un máximo de 20 caracteres. Haga doble click en el botón INGRESAR e incluya la siguiente rutina
Private Sub CommandButton1_Click()
For I = 1 To 200
If Cells(I + 9, 5).Value = TextBox3.Text Then
MsgBox ("LA PERSONA YA SE ENCUENTRA REGISTRADA")
Exit For
Else
If Cells(I + 9, 2).Value = "" Then
Cells(I + 9, 2).Value = I
Cells(I + 9, 3).Value = TextBox1.Text
Cells(I + 9, 4).Value = TextBox2.Text
Cells(I + 9, 5).Value = TextBox3.Text
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
Exit For
End If
End If
Next
End Sub
Entre las adiciones novedosas para el estudiante, se incluyó un condicional inicial en el ciclo FOR (IF THEN ELSE), cuya función es la de buscar si existe un registro de un usuario que coincida con el número de CÉDULA. Si esto ocurre, se enviará un mensaje de error empleando el comando MSGBOX (recuerde que la cédula se ubica en el ejemplo en la columna número 5 de la hoja de cálculo y en el TEXTBOX3 del formulario), saliendo del ciclo mediante el uso del comando EXIT FOR.
Si no se encuentra una coincidencia en el número de la CÉDULA, se procederá a trasladar los valores del formulario a la hoja de cálculo. Observe que una vez ingresados los datos de la persona, se borrarán los TEXTBOX de forma automática (esto se logra empleando la línea de código TEXTBOX#.TEXT = “”).
Cuarto paso: Activar el formulario desde la hoja de cálculo
Regrese a la hoja de cálculo y haga doble click en el botón INGRESAR INSCRITO y escriba el siguiente código.
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Realice una prueba rápida sobre el funcionamiento del formulario.
Quinto paso: Programación de la opción de búsqueda de inscritos
Ingrese el siguiente código para programar el botón BUSCAR que esta ubicado en la hoja.
Private Sub CommandButton2_Click()
For I = 1 To 200
If Cells(18, 8).Value = Cells(I + 9, 5).Value Then
Cells(23, 8).Value = Cells(I + 9, 3).Value
Cells(24, 8).Value = Cells(I + 9, 4).Value
Exit For
End If
Next
End Sub
Nótese que el llamado que hace el comando CELLS(18,8).VALUE equivale al valor de la celda donde se escribe la CÉDULA que va a ser buscada.
Sexto paso: Plantilla para el registro de las votaciones
Luego de programar el registro de inscritos a la jornada electoral, se procederá a la creación de una plantilla (en una hoja llamada MESAS) para el registro de los votos de aquellas personas que reposan en el listado anterior. Para este ejercicio se tomarán los siguientes supuestos:
Cuatro aspirantes a un mismo cargo
Una mesa de votación
Solo se podrá votar una vez
Se debe elegir a un solo candidato de los cuatro aspirantes
Puede votar aquel que se haya inscrito previamente
Para cumplir con estos requisitos, la plantilla debe contar con los siguientes campos:
Consecutivo (No.)
Votantes (equivalente a la cédula de la persona que ejerce el voto)
Candidato 1 (Acumulado de votos a favor del candidato 1)
Candidato 2 (Acumulado de votos a favor del candidato 2)
Candidato 3 (Acumulado de votos a favor del candidato 3)
Candidato 4 (Acumulado de votos a favor del candidato 4)
Total (el resultado de la suma de todos los votos)
Incluya imágenes que representen los candidatos, un botón denominado VOTAR, una gráfica resumen y el número de la mesa.
Ingrese la función SUMA para calcular el número total de los votos. Rellene los votos por candidato con valores de cero.
Séptimo paso: Formulario para el registro de los votos
El primer paso para crear el formulario basado en los requisitos definidos en el paso anterior, se debe agregar un campo denominado CÉDULA DEL VOTANTE junto a un botón con la función de ACTIVAR. Luego coloque un control IMAGE para representar la opción de voto con la imagen del candidato.
Haga doble click en la propiedad PICTURE para desplegar una ventana y poder seleccionar la imagen del candidato.
Modifique la propiedad PICTURESIZEMODE a 1 – FMPICTURESIZEMODESTRETCH para poder mostrar la imagen completa en el recuadro del control.
Realice los pasos anteriores para agregar las imágenes de los demás candidatos. Acompañe cada imagen con su correspondiente etiqueta de texto que los identifican.
Para evitar un voto no autorizado, cambie la propiedad ENABLED a FALSE para cada uno de los controles tipo IMAGE.
Octavo paso: Activar el formulario desde la hoja de cálculo
Regrese a la hoja de cálculo y haga doble click en el botón REGISTRO e ingrese el siguiente código.
Private Sub CommandButton1_Click()
UserForm2.Show
End Sub
Noveno paso: Programación del registro de votaciones
Haga doble click en el botón ACTIVAR del USERFORM2 e ingrese el siguiente código.
Private Sub CommandButton1_Click()
Registrado = "NO"
For I = 1 To 200
If TextBox1.Text = Sheets("Registro").Cells(I + 9, 5).Value Then
MsgBox ("EL USUARIO SE ENCUENTRA REGISTRADO. PUEDE REALIZAR LA VOTACIÓN")
Registrado = "SI"
Image1.Enabled = True
Image2.Enabled = True
Image3.Enabled = True
Image4.Enabled = True
Exit For
End If
Next
If Registrado = "NO" Then
MsgBox ("EL USUARIO NO SE ENCUENTRA REGISTRADO. USTED NO PUEDE VOTAR")
End If
End Sub
La primera parte del código crea una variable llamada REGISTRO cuyo valor es NO. Esto indica que de forma predeterminada el votante no está registrado. Luego se inicia un ciclo que busca el número de cédula en la hoja REGISTRO. En caso de que exista una coincidencia, aparecerá un mensaje EL USUARIO SE ENCUENTRA REGISTRADO. PUEDE REALIZAR LA VOTACIÓN, cambiando el valor de la variable registro a SI y activando cada control IMAGE.
En caso de que no exista una coincidencia, se muestra el mensaje EL USUARIO NO SE ENCUENTRA REGISTRADO. USTED NO PUEDE VOTAR. Ahora que están activados los controles IMAGE, proceda a pulsar doble click en el primero de ellos e ingrese el siguiente código.
Private Sub Image1_Click()
Voto = "NO"
For I = 1 To 200
If TextBox1.Text = Cells(I + 2, 14).Value Then
MsgBox ("EL USUARIO YA VOTÓ")
Voto = "SI"
Exit For
End If
Next
If Voto = "NO" Then
For I = 1 To 200
If Cells(I + 2, 13).Value = "" Then
Cells(13, 7).Value = Cells(13, 7).Value + 1
Cells(I + 2, 13).Value = I
Cells(I + 2, 14).Value = TextBox1.Text
Image1.Enabled = False
Image2.Enabled = False
Image3.Enabled = False
Image4.Enabled = False
UserForm2.Hide
Exit For
End If
Next
End If
End Sub
Este código comienza con la definición de la variable VOTO con un valor predeterminado igual a NO. Luego se realiza una búsqueda para determinar si la persona ha votado con anterioridad (esto evita que un usuario registrado vote más de una veces). En caso de acierto el valor de la variable VOTO cambia a SI.
El código continúa, en el caso de que la variable mantenga el valor NO, sumando un voto al candidato 1, actualizando el registro de votación y luego desactivando los controles IMAGE preparando el ingreso de un nuevo votante. Haga doble click en el control IMAGE2 e ingrese el siguiente código.
Private Sub Image2_Click()
Voto = "NO"
For I = 1 To 200
If TextBox1.Text = Cells(I + 2, 14).Value Then
MsgBox ("EL USUARIO YA VOTÓ")
Voto = "SI"
Exit For
End If
Next
If Voto = "NO" Then
For I = 1 To 200
If Cells(I + 2, 13).Value = "" Then
Cells(14, 7).Value = Cells(14, 7).Value + 1
Cells(I + 2, 13).Value = I
Cells(I + 2, 14).Value = TextBox1.Text
Image1.Enabled = False
Image2.Enabled = False
Image3.Enabled = False
Image4.Enabled = False
UserForm2.Hide
Exit For
End If
Next
End If
End Sub
Esta rutina cambia solo en la línea de código CELLS(14, 7).VALUE = CELLS(14, 7).VALUE + 1, donde la fila se incrementa en 1 para coincidir con el conteo de votos del candidato 2. Generé las rutinas para el resto de componentes IMAGE (3 y 4).
Décimo paso: Prueba de la aplicación
Realice la siguiente prueba sobre la aplicación
1.Ingrese los siguientes usuarios en la lista de inscritos
Pedro Pérez Ortiz – Cédula: 102049391
Julio López Romero – Cédula: 102049203
.
2.Ingrese la siguiente persona
Jaime Varela Ramírez – Cédula: 102049203
En este paso se debería generar el mensaje de coincidencia de la cédula
3.Modifique el número de cédula de la persona, para poder registrarla en la base de datos
Jaime Varela Ramírez – Cédula: 102047727
4.Pulse en el botón VOTAR de la hoja MESAS, digite la cédula 102041110 y pulse en el botón ACTIVAR.
Debe aparecer una ventana de aviso de que la persona se encuentra inscrita y da el paso a la votación.
5.Elija el candidato 2
La cédula aparece en listado anexo de votantes y la votación del candidato 2 es de 1.
6.Pulse en el botón VOTAR de la hoja MESAS, digite la cédula 102041880 y pulse en el botón ACTIVAR.
Debe salir un mensaje donde informa que el usuario no está inscrito.
7.Pulse en el botón VOTAR de la hoja MESAS, digite la cédula 102041110 y pulse en el botón ACTIVAR.
Debe aparecer una ventana de aviso de que la persona se encuentra inscrita y da el paso a la votación.
8.Elija el candidato 3
La aplicación debe mostrar un mensaje indicando que la persona ya ha votado.