0. INTRODUCCIÓN
Desde que fueron creadas las hojas de cálculo en 1978, han jugado un papel importante en el desarrollo empresarial. Basado en un esquema de tablas (o cuadrículas), facilita el almacenamiento de datos, que combinado con el poder de las computadoras, se convierte en la forma más versátil y funcional para el análisis de los mismos.
En los años 80, con la introducción de los computadores personales en empresas y hogares, se difundió la utilización de las hojas de cálculo, convirtiéndose en herramientas con usos aprovechables para el manejo de la contabilidad y otras actividades de gestión tanto empresariales como personales. El futurólogo Peter Drucker aseveró esta afirmación en 1988 en un artículo titulado “the coming of the new organization” (la llegada de la nueva organización), asegurando que “el trabajo de procesar datos que antes tomaban varios años-hombre, puede ser completado en varias horas por cualquier persona usando estas herramientas”.
Consideradas como aplicaciones indispensables, incluidas en la mayoría de Suites informáticas populares, las hojas de cálculo son utilizadas en todas las áreas de las empresas para almacenar y analizar datos, crear informes vistosos y automatizar ciertas tareas rutinarias. A pesar de que existen gran variedad de hojas de cálculo, la aplicación más famosa y completa es Microsoft® Excel ofrecida en la Suite Microsoft® Office. Su extensión global ha originado que en escuelas y universidades se impartan clases en varios niveles para aprovechar las capacidades ofrecidas por esta herramienta. Hoy en día se pueden hallar aplicaciones gratuitas de hojas de cálculo eficientes, que incluyen la opción de macros y la programación bajo sus propios lenguajes (ver tabla 1).
El presente libro propone explotar las opciones avanzadas de Microsoft® Excel a partir del desarrollo de casos prácticos, en los que el lector podrá aplicar conjuntamente formatos, funciones, fórmulas, hipervínculos, macros, además de comprender el entorno de Visual Basic para Aplicaciones® (VBA). Cada capítulo contiene un caso resuelto descrito paso a paso, donde se implementan elementos de forma progresiva, hasta lograr un nivel de manejo completo para el desarrollo de sus propias aplicaciones en cualquier área.
La automatización de rutinas combinada con una programación orienta a objetos en un entorno de desarrollo rápido (RAD) con VBA, convierten a Microsoft® Excel en potente herramienta con la que se podrá administrar fácilmente la contabilidad de una empresa, gestionar bases de datos, facturar, controlar el ingreso a instalaciones, entre muchas otras más aplicaciones.
En el mundo académico, de acuerdo con las pesquisas realizadas por los autores, no existe un libro que explote el desarrollo de aplicaciones con Microsoft® Excel en la forma que aquí se presenta, por lo que se invita a los usuarios de este programa (con un nivel de manejo intermedio, como prerrequisito), a estudiar y experimentar con cada uno de los casos propuestos.
El libro contiene 12 casos prácticos, cada uno incluyendo nuevos elementos (entre funciones, formatos, formularios, controles y algoritmos). Al final, se propondrán casos que integran todos los elementos y conceptos adquiridos, en el desarrollo de aplicaciones cada vez más complejas. Cada caso o ejercicio está acompañado de gráficos progresivos (más de 180 ilustraciones componen la obra) y/o algoritmos desarrollados en Visual Basic, permitiendo al lector aplicar directamente en Microsoft® Excel los contenidos de cada capítulo.
Capítulo 1: Aplicación de funciones y formatos
Capítulo 2: Diseño de un formulario de encuesta
Capítulo 3: Diseño de un Bingo en Microsoft® Excel
Capítulo 4: Diseño del juego de las preguntas
Capítulo 5: Creación de ventanas empleando Visual Basic para Aplicaciones
Capítulo 6: Ingreso de datos a una tabla empleando Visual Basic para Aplicaciones
Capítulo 7: Manejo de datos empleando Visual Basic para Aplicaciones
Capítulo 8: Diseño de una aplicación para facturar en una pequeña empresa
Capítulo 9: Diseño de un listín telefónico
Capítulo 10: Diseño de una aplicación para el control de votaciones
Capítulo 11: Diseño de una aplicación para gestionar un centro de mascotas
Capítulo 12: Diseño de una aplicación para la gestión de información documental
Esta obra es el resultado final del proyecto de investigación en el desarrollo de aplicaciones informáticas prácticas para el sector empresarial realizado por los docentes Juan Carlos Vergara Schmalbach y Víctor Quesada Ibargüen para el Grupo Métodos Cuantitativos de Gestión de la Universidad de Cartagena.
1. APLICACIÓN DE FUNCIONES Y FORMATOS
Objetivo: Desarrollar un ejercicio completo aplicado al manejo de formatos y funciones en MS® Excel.
Primer paso: Creación de la portada
En la HOJA1 seleccione todas las celdas, pulsando en el botón SELECCIONAR TODO, localizado en la esquina superior izquierda del área de trabajo, y aplique un color azul claro como relleno de las celdas.
Ilustración . Área de trabajo de Microsoft® Excel
Ubíquese en la celda B2 y escriba el título “ANÁLISIS ESTADÍSTICO”. Centre el texto teniendo en cuenta el ancho visible del área de trabajo (empleé el botón COMBINAR Y CENTRAR). Aumente el tamaño de la fuente a su consideración.
Ilustración . Barra de herramienta de Microsoft® Excel 2010
Agregue además, su(s) nombre(s) (debajo del título), la ciudad, institución, el año y demás información pertinente para una hoja de presentación, como se muestra a continuación.
Ilustración . Portada propuesta para el ejercicio 1
Es hora de agregar un botón de hipervínculo. En el menú INSERTAR, seleccione una FORMA rectangular y dibújela en una esquina inferior del área visible de la portada. Agregue a la FORMA el texto “CONTINUAR>>”. Cambie el color de la FORMA dándole el aspecto de un botón (pruebe varias combinaciones de colores y contrastes en el menú FORMATO que se activa al seleccionar una FORMA) y ajuste el tamaño de letra a su contorno.
Ilustración . Formato de los botones de hipervínculos
Segundo paso: Activación del botón CONTINUAR con hipervínculos
Antes de establecer un hipervínculo, se recomienda asignar un nombre a cada una de las hojas. En este ejemplo se trabajarán cuatro hojas denominadas así:
Ilustración . Nombre de las hojas para el ejercicio 1
Por defecto, Microsoft® Excel establece tres hojas visibles, por lo que deberá crear una nueva hoja adicional (la hoja número cuatro) pulsando en el botón INSERTAR HOJA DE CÁLCULO que se encuentra justo al lado de los nombres o fichas de hojas en la parte inferior del área de trabajo.
Ilustración . Botón insertar hoja de cálculo en Microsoft® Office 2010
Ubique el puntero en el borde del botón recién creado y pulse el botón derecho del mouse, para desplegar un menú flotante donde se encuentra la opción HIPERVÍNCULO.
Ilustración . Programación del botón de hipervínculos en el ejercicio 1
En la ventana INSERTAR HIPERVÍNCULO seleccione la opción LUGAR DE ESTE DOCUMENTO, luego la hoja CONTENIDO especificando la REFERENCIA DE CELDA B2. De click en el botón ACEPTAR.
Ilustración . Ventana para la programación de hipervículos
Realice una prueba del botón, haciendo click sobre él. Deberá saltar a la hoja CONTENIDO, posicionándose en la celda B2.
Tercer paso: Diseño de la hoja CONTENIDO
En la hoja CONTENIDO, seleccione todas las celdas y cambie el color de fondo a rojo claro. Seleccione las tres primeras columnas, modificando su color a un azul claro (el mismo que se utilizó en la portada). Agregue el título “CONTENIDO” en la hoja a partir de la celda E2, centrándolo hacia el margen derecho de la zona visible del área de trabajo.
Ilustración . Diseño de la hoja de contenido para el ejercicio 1
Seleccione un grupo de celdas partiendo de la celda E4, que abarque la mayor parte de la zona coloreada con rojo claro. Combine las celdas, cambiando su color al azul claro. Agregue los bordes necesarios para dividir las zonas demarcadas con azul.
Ilustración . Aplicación de formatos en la hoja contenido del ejercicio 1
En la última celda combinada escriba el siguiente texto (puede usar las teclas ALT + ENTER para bajar una línea de texto dentro de la celda).
La siguiente aplicación realizada en MS Excel tiene como objetivo resumir un conjunto de datos en una tabla de frecuencia.
A su izquierda encontrará los hipervínculos que lo llevarán a los datos de ejemplo y a la hoja resumen.
Modifique el formato de la celda para ALINEAR EN EL MEDIO, AJUSTAR TEXTO y ampliar el tamaño de la letra como se puede observar en el siguiente gráfico:
Ilustración . Formato de texto en celdas combinadas
Crea cuatro botones (con el nombre correspondiente a cada hoja) empleando los mismos pasos usados para el botón de la hoja PORTADA (puedes crear uno primero, para luego copiar y pegar el número de veces necesarias). Programe los botones con los vínculos correspondientes.
Ilustración . Diseño final de la hoja de contenido para el ejercicio 1
Cuarto paso: Diseño de las demás hojas
Aprovechando el diseño y tiempo invertido en la hoja creada en el paso anterior, se procederá a copiar su contenido a la hoja DATOS. Este procedimiento se realiza fácilmente pulsando sobre el botón SELECCIONAR TODO y presionando las teclas CRTL+C, para luego posicionarse en la celda A1 de la hoja DATOS y pulsar la tecla ENTER. Cambie el título a “DATOS INICIALES”. Borre el texto introductorio de la celda combinada y desactive el botón COMBINAR Y CENTRAR.
Ilustración . Esquema general de la hoja datos para el ejercicio 1
Realice nuevamente el proceso anterior en la hoja DATOS y copia su contenido en la hoja RESUMEN, modificando el título por “RESUMEN DESCRIPTIVO”.
Quinto paso: Ingreso de los datos
En la hoja DATOS escriba los siguientes valores (ver tabla 2) en el área azul (ajuste el área al número de datos):
Los datos representarán las temperaturas (°C) registradas en una ciudad durante un periodo de tiempo.
Ilustración . Diseño final de la hoja datos para el ejercicio 1
Sexto paso: Elaboración del resumen descriptivo
En la zona azul de la hoja RESUMEN, cree la siguiente tabla que se muestra a continuación.
Ilustración . Esquema general de la hoja resumen para el ejercicio 1
Se procederá a armar la tabla de frecuencia por intervalos de clase (siete en total), definiendo primero el VALOR MÍNIMO, MÁXIMO, RANGO y ANCHO del intervalo.
Para calcular el VALOR MÍNIMO y VALOR MÁXIMO emplee la función MIN y MAX, respectivamente, seleccionando los valores digitados en el paso anterior que se encuentran en la hoja DATOS.
Ilustración . Funciones Min y Max en Microsoft® Excel
El RANGO equivale a la resta entre el VALOR MÁXIMO y el VALOR MÍNIMO. El ANCHO será el resultado de la división entre el RANGO y Nc (NÚMERO DE INTERVALOS DE CLASE).
Ilustración . Cálculo de las variables Rango y Ancho
El primer LÍMITE MENOR (Lm) equivale al VALOR MÍNIMO. El primer LÍMITE SUPERIOR se calcula sumando el LÍMITE MENOR con el ANCHO (el ANCHO es una referencia fija de celda). El LÍMITE MENOR del segundo intervalo es el LÍMITE SUPERIOR del primer intervalo. Arrastre las fórmulas de los límites calculados para el resto de los intervalos.
Ilustración . Determinación de los límites superior e inferior para el ejercicio 1
El último LIMITE SUPERIOR del último intervalo debe coincidir con el VALOR MÁXIMO. Para el cálculo de la frecuencia absoluta (f) en datos continuos (como es el caso de las temperaturas) se debe utilizar la función FRECUENCIA. Para ello debe ubicarse en la frecuencia absoluta del primer intervalo y escribir:
=FRECUENCIA(
En el parámetro DATOS seleccione todos los valores digitados de la hoja DATOS (luego punto y coma o coma, según la configuración de Microsoft® Excel). El parámetro GRUPOS equivale a todos los LÍMITES SUPERIORES (del intervalo 1 al 7) – No es necesario fijar las celdas. Pulse la tecla ENTER y seleccione las celdas desde la primera hasta la última frecuencia (f).
Ilustración . Cálculo de la frecuencia absoluto
Presione la techa F2 y luego la combinación de teclas CRTL + SHIFT (MAYÚSCULA SOSTENIDA) + ENTER para hallar las frecuencias restantes. Calcule la sumatoria de las frecuencias absolutas.
Ilustración . Frecuencia absoluta calculada
A continuación se muestran las fórmulas para las frecuencias F, h y H.
Frecuencia Absoluta Acumulada (F)
Frecuencia Relativa (h)
Frecuencia Relativa Acumulada (H)
Siendo n el tamaño de la muestra (130) e i el número del intervalo cuyo indicador se desea calcular.
El resultado final de la tabla de frecuencia se muestra a continuación:
Ilustración . Tabla de frecuencia final
Séptimo paso: Protección de celdas y hojas
Para finalizar se procederá a proteger las celdas y hojas para evitar que el usuario modifique por error algunos elementos dispuestos en el diseño. Antes de proteger los contenidos desactive para cada hoja, la opción TÍTULOS que se encuentra en el menú VISTA.
Protección de las hojas PORTADA y CONTENIDO: En el menú REVISAR, pulse sobre el botón PROTEGER HOJA, con que se despliega una ventana del mismo nombre, en la que deberá desactivar la opción SELECCIONAR CELDAS BLOQUEADAS.
Ilustración . Bloqueo de hojas y celdas en Microsoft® Excel
Protección de la hoja DATOS: Seleccione los valores digitados, y pulse con el botón derecho del mouse para desplegar la ventana FORMATO DE CELDAS. Una vez desplegada la ventana, diríjase a la ficha PROTEGER y desactive la opción BLOQUEADA. Este paso es necesario para poder seguir editando las celdas una vez que se proteja la hoja. Luego, en el menú REVISAR, pulse sobre el botón PROTEGER HOJA y desmarque la opción SELECCIONAR CELDAS BLOQUEADAS.
Ilustración . Desbloqueo de celdas en Microsoft® Excel
Protección de la hoja RESUMEN: Realice el procedimiento anterior seleccionando las celdas correspondientes a los Lm, Ls, f, F, h, H, Nc, Val. Min, Val. Max, Rango y Ancho, para desbloquearlas. Continúe con la protección de la hoja.
Ilustración . Selección de celdas desbloqueadas de la hoja resumen para el ejercicio 1
En resumen, la aplicación, como se puede apreciar, permite describir en forma automatizada, las estadísticas básicas de un conjunto de datos.
2. DISEÑO DE UN FORMULARIO DE ENCUESTA
Objetivo: Desarrollar una plantilla que contenga una encuesta estructurada en MS® Excel.
Primer paso: Creación de la portada
En la HOJA1 seleccione todas las celdas, pulsando en el botón SELECCIONAR TODO, y aplique un color rojo oscuro como relleno de las celdas.
Ilustración . Área de trabajo en Microsoft® Excel 2010
Ubíquese en la celda B2 y escriba el título “ENCUESTA ESTUDIANTIL NACIONAL”. Centre el texto teniendo en cuenta la altura visible del área de trabajo (emplee el botón COMBINAR Y CENTRAR). Active los botones AJUSTAR TEXTO y GIRAR TEXTO HACIA ARRIBA (que se encuentra como una opción en el botón ORIENTACIÓN). Aplique NEGRILLA, cambie el color del texto a blanco, y aumente el tamaño de la fuente y el ancho de la columna B a su consideración. El efecto final deberá verse como se muestra a continuación.
Ilustración . Diseño de la portada para el ejercicio 2
Agregue las siguientes FORMAS (se encuentra en el menú o ficha INSERTAR) en secuencia, de izquierda a derecha, tratando de abarcar la zona visible del área de trabajo: 1 PENTÁGONO amarillo, 1 CHEURÓN azul y 1 CHEURÓN rojo.
Ilustración . Esquema general de la portada para el ejercicio 2
En el pentágono escriba el siguiente texto:
Esta encuesta está dirigida a los estudiantes de Educación Superior, con el fin de conocer sus expectativas referentes a la investigación.
En el CHEURÓN rojo escriba la palabra “CONTINUAR”. Pulse con el botón derecho del mouse sobre el borde de esta FORMA y despliegue la ventana FORMATO DE FORMA. En la ventana seleccione CUADRO DE TEXTO, active la casilla PERMITIR QUE EL TEXTO DESBORDE LA FORMA y modifique la opción DIRECCIÓN DEL TEXTO a GIRAR TODO EL TEXTO 270°.
Ilustración . Formato de textos al interior de una autoforma
Ubique el contenido, cambie el tamaño del texto y color a su criterio en las FORMAS ya editadas.
Ilustración . Vista final de la portada para el ejercicio 2
Segundo paso: Activación del botón CONTINUAR con hipervínculos
Antes de establecer un hipervínculo, se recomienda asignar un nombre a cada una de las hojas que serán utilizadas en la aplicación. En este ejemplo se trabajarán tres hojas denominadas así (Por defecto, MS® Excel establece tres hojas visibles):
Ilustración . Nombre de las hojas dispuestas en el ejercicio 2
Ubique el puntero en el borde de la FORMA CHEURÓN que tiene el texto “CONTINUAR” y pulse el botón derecho del mouse, para desplegar un menú flotante donde se encuentra la opción HIPERVÍNCULO.
Ilustración . Programación del botón de hipervínculo
En la ventana INSERTAR HIPERVÍNCULO seleccione la opción LUGAR DE ESTE DOCUMENTO, luego la hoja ENCUESTA especificando la REFERENCIA DE CELDA B2. De click en el botón ACEPTAR.
Ilustración . Programación de hipervínculos
Realice una prueba del botón, haciendo click sobre él. Deberá saltar a la hoja ENCUESTA, posicionándose en la celda B2.
Tercer paso: Diseño de la hoja ENCUESTA
Antes de empezar el diseño de la encuesta, coloreé el fondo de la hoja con rojo oscuro (el mismo de la portada). La encuesta propuesta tendrá los siguientes componentes: encabezado, cuerpo y pie de página.
Desde la celda B2, escriba el título “ENCUESTA ESTUDIANTIL NACIONAL”, centrándolo a lo largo de la zona visible. Realice este mismo paso desde la celda B3, donde deberá escribir el subtítulo “SEMILLERO DE INVESTIGACIÓN”.
Seleccione el rango de celda B4:C4, combine y centre. Escriba en el rango la palabra “OBJETIVO”. Combine un grupo de celdas a partir de la celda D4 en adelante y escriba el siguiente texto:
El semillero de investigación tiene entre de sus proyectos la realización de un sondeo sobre las expectativas de investigación de estudiantes de primeros semestres de Instituciones de Educación Superior. Esperamos que la información obtenida, gracias a esta encuesta, sirva para establecer recomendaciones a los grupos de investigación, docentes, semilleros y demás entes responsables, sobre el desarrollo de la investigación en las universidades.
Expanda el ancho de fila para poder mostrar el texto completo. Aplique ALINEAR EN EL MEDIO para todos los textos. Modifique los colores, tamaños y demás formatos de celdas, buscando siempre resaltar el encabezado de la encuesta.
Ilustración . Encabezado de la encuesta para el ejercicio 2
Empezando en la celda B5, diseñe la siguiente tabla (cuerpo de la encuesta). No se preocupe si la encuesta sale del área visible de la hoja.
Ilustración . Estructura general de la encuesta
Agregue el pie de página de la encuesta
Ilustración . Pie de página de la encuesta
ENCUESTADOR:
_________________________
VISTO BUENO:
_________________________
La encuesta completa se muestra a continuación:
Ilustración . Encuesta final en Microsoft® Excel
Posiciónese en la celda A5 y en el menú VISTA, pulse en el botón INMOVILIZAR PANELES. Esta acción permitirá fijar el encabezado de la encuesta.
Ilustración . Inmovilización de filas y columnas
Cuarto paso: Insertar botones de formulario en la encuesta
El primer paso corresponde a la activación del menú PROGRAMADOR: en el botón PERSONALIZAR BARRA DE HERRAMIENTA DE ACCESO RÁPIDO seleccione la opción MÁS COMANDOS.
En Office 2010, pulse en PERSONALIZAR CINTA de la ventana OPCIONES DE EXCEL, marcando la ficha PROGRAMADOR.
Ilustración . Activación de la ficha programador en Microsoft® Excel 2010
En Office 2007, deberá pulsar en MÁS FRECUENTES chequeando la opción MOSTRAR FICHA PROGRAMADOR en la cinta de opciones. En el botón INSERTAR tendrá disponible una variedad de CONTROLES DE FORMULARIO.
Ilustración . Controles de formulario disponibles en Microsoft® Excel
El primer control que se utilizará es el CUADRO COMBINADO. Ubique este control tratando de abarcar la celda correspondiente al campo DOCUMENTO.
Ilustración . Control cuadro combinado
Para poder desplegar la lista de opciones de tipos de documentos disponibles, cree la siguiente tabla en la hoja CONTROL (no se requiere aplicar ningún tipo de formatos a ésta hoja):
Ilustración . Opciones disponibles del cuadro combinado
Nuevamente en la hoja ENCUESTA, pulse el botón derecho del mouse sobre el control recién creado y haga click en FORMATO DE CONTROL. En la ventana desplegada, escoja la ficha CONTROL y en el campo RANGO DE CELDAS, seleccione las celdas con los tipos de documentos que fueron agregados en la hoja CONTROL. Pruebe el control haciendo click sobre él.
Ilustración . Programación del botón de cuadro combinado
Realice el mismo procedimiento para el campo DE, relacionándolo con la siguiente lista de ciudades (a manera de ejemplo):
Ilustración , Opciones disponibles para el botón de cuadro combinando del campo DE
Para el campo EDAD utilice el CONTROL DE NÚMERO, insertándolo al lado derecho de la celda donde se ingresará la edad del encuestado.
Ilustración . Control de número
Abra la ventana FORMATO DE CONTROL del objeto insertado, y en la ficha CONTROL escriba los siguientes datos:
Ilustración . Programación del control de número
Vincule el control con la celda del campo EDAD. Para poder observar el valor de la edad, cambie la ALINEACIÓN DEL TEXTO A LA IZQUIERDA. Realice una prueba al control.
Ilustración . Prueba del control de número
Para el campo SEXO se emplearán dos BOTONES DE OPCIÓN, uno para femenino (F) y otro para masculino (M). Antes de agregar los botones utilice el control CUADRO DE GRUPO, enmarcando toda la celda correspondiente al campo SEXO. Elimine el texto que aparece predeterminado en el control.
Dentro del área demarcada por la celda, inserte los dos BOTONES DE OPCIÓN, modificando el texto por F y M, respectivamente. Realice una prueba (solo uno de los BOTONES DE OPCIÓN puede ser seleccionado a la vez).
Ilustración . Control botones de opción
Para las preguntas número 1 y 2, existirán dos posibles respuestas: SI o NO. Utilice también los BOTONES DE OPCIÓN para cada opción de respuesta, encerrándolos por pregunta con un control CUADRO DE GRUPO. Realice una prueba sobre los controles. Tenga cuidado de que los BOTONES DE OPCIÓN queden dentro de sus respectivos CUADROS DE GRUPO (no transponga los CUADROS DE GRUPO).
Ilustración . Control cuadro de grupo
Aplique el mismo concepto a la pregunta 3, con las siguientes opciones de repuestas:
Remuneración económica
Ganas de aprender algo nuevo
Para ocuparme durante el día
Conocer personas
La pregunta 4 posee múltiples respuestas en las cuales se podrá marcar más de una opción. En casos como estos, se podrá utilizar un control CASILLA DE VERIFICACIÓN (debe colocar uno por cada opción de respuesta). No es necesario agrupar estos controles con los CUADROS DE GRUPOS. La pregunta 4 tendrá las siguientes alternativas de respuestas:
Directores del grupo de investigación
Directores de programas
Coordinadores de investigación
Responsabilidad de los docentes
Responsabilidad de los estudiantes
Ilustración . Encuesta final con los controles de formulario
Quinto paso: Validación de datos
La VALIDACIÓN DE DATOS sobre las celdas permitirá establecer restricciones o limitaciones al usuario sobre el ingreso de datos. Para este ejemplo se establecieron por campo, las siguientes limitaciones:
NOMBRE: Se aceptan máximo 20 caracteres
APELLIDOS: Se aceptan máximo 25 caracteres.
NÚMERO: Se aceptan máximo 10 caracteres
DIRECCIÓN: Se aceptan máximo 30 caracteres
EMAIL: Se aceptan máximo 50 caracteres
PREGUNTA 5: Se aceptan máximo 100 caracteres.
Sitúese en la celda correspondiente al ingreso de datos para el campo NOMBRE. En la ficha DATOS teclee el botón VALIDACIÓN DE DATOS. En la ventana que se muestra pulse en la ficha CONFIGURACIÓN y modifique los parámetros PERMITIR a LONGITUD DE TEXTO, DATOS a MENOR O IGUAL QUE y MÁXIMO a 20.
Ilustración . Ventana para la validación de datos
En la ficha MENSAJE DE ERROR agregue los siguientes datos:
Ilustración . Mensaje de error en la validación de datos
Puede seleccionar diferentes estilos de mensajes de error (grave, advertencia e información). Realice este mismo procedimiento para las validaciones en los demás campos.
Sexto paso: Protección de celdas y hojas
Para finalizar se procederá a proteger las celdas y hojas para evitar que el usuario modifique por error algunos elementos dispuestos en el diseño. Antes de proteger los contenidos desactive para cada hoja, la opción TÍTULOS que se encuentra en el menú VISTA.
Protección de la hoja PORTADA: En el menú REVISAR, pulse sobre el botón PROTEGER HOJA, con lo que se desplegará una ventana del mismo nombre, en la que deberá desactivar la opción SELECCIONAR CELDAS BLOQUEADAS.
Ilustración . Protección de hojas en Microsoft® Excel
Protección de la hoja ENCUESTA: Seleccione las celdas en las cuales el usuario (persona encuestada) ingresará los datos solicitados (puede seleccionar varias celdas no continuas manteniendo presionada la tecla CTRL) y pulse con el botón derecho del mouse para desplegar la ventana FORMATO DE CELDAS. Una vez desplegada la ventana, diríjase a la ficha PROTEGER y desactive la opción BLOQUEADA (en la figura siguiente se resaltan las celdas que se desbloquearán con un color rojo). Este paso es necesario para poder seguir editando las celdas una vez se proteja la hoja. Luego, en el menú REVISAR, pulse sobre el botón PROTEGER HOJA y desmarque la opción SELECCIONAR CELDAS BLOQUEADAS. Para finalizar el ejercicio, oculte la hoja CONTROL. Realice una prueba final simulando la realización de una encuesta.
Ilustración . Desbloqueo de celdas para el ejercicio 2
3. DISEÑO DE UN BINGO
Objetivo: Desarrollar una pequeña aplicación que representa un juego de Bingo de 30 números donde se emplee el uso de formatos de celda y funciones condicionales
Primer paso: Creación de un generador de números aleatorios
En la HOJA 1 pulse el botón SELECCIONAR TODO, y aplique un color verde claro como relleno de las celdas.
Ilustración . Área de trabajo en Microsoft® Excel 2010
Cambie el nombre de la HOJA 1 por BINGO. Seleccione el rango de celdas B2:E16, combine las celdas y cambie el color a blanco. En la celda combinada escriba la siguiente fórmula:
=ENTERO(ALEATORIO()*30)+1
La función ALEATORIO genera un número entre 0 y 1. A esta función se le multiplica por 30, dado que el bingo constará de solo 30 números. La función ENTERO devuelve el valor sin decimales. Modifique el formato del rango de celda aumentando el tamaño de la fuente y centrándolo verticalmente.
Ilustración . Generador de números aleatorios para el ejercicio 3
Compruebe que el número cambia pulsando la tecla F9.
Segundo paso: Creación del tablero de control
Escriba los números del 1 al 30 al lado derecho de la celda combinada.
Ilustración . Pantalla de números del juego de Bingo
Ubíquese en la celda correspondiente al número 1 y pulse en NUEVA REGLA del botón FORMATO CONDICIONAL que se encuentra en la ficha INICIO.
Ilustración . Botón de formato condicional
En la ventana NUEVA REGLA DE FORMATO, seleccione UTILICE UNA FÓRMULA QUE DETERMINE LAS CELDAS PARA APLICAR FORMATO. En el campo DAR FORMATO A LOS VALORES DONDE ESTA FÓRMULA SEA VERDADERA escriba una condición donde el número ALEATORIO sea igual al valor contenido en la celda actual (1). En este ejemplo se utilizó:
=($B$2=$G$2)
Si la condición es VERDADERA se aplicará el formato establecido. Pulse el botón FORMATO de la ventana y en la ficha RELLENO seleccione el color rojo.
Ilustración . Aplicación del formato condicional para cada celda
Realice este mismo procedimiento para el resto de los números (del 2 al 30). Pulse varias veces la tecla F9 y compruebe que se resalte en el cuadro de control el valor correspondiente al número ALEATORIO.
Ilustración . Prueba preliminar realzada en el ejercicio 3
Tercer paso: Creación del tarjetón para el juego
Cree la siguiente tabla que funcionará como un tarjetón del bingo que contendrá unos números al azar. Se agregaron unos números al azar en las celdas de color verde oscuro (la columna A contiene los números del 1 al 10, la columna B del 11 al 20 y la C del 21 al 30).
Ilustración . Cartón digital del juego de Bingo
En caso de salir un número del tarjetón en el sorteo, el jugador deberá marcar con la letra “X” el acierto.
Cuarto paso: Condicional que informe si el usuario es ganador
El jugador gana si logra marcar todos los números que aparecen en su tarjetón. Para hacer que MS® Excel muestre este mensaje se requerirá de un condicional. Escriba en una celda las palabras “CONTEO DE ACIERTOS”. Se realizará un conteo del total de las “X” que el usuario marca en caso de existir un acierto. Si existen 15 “X” se decretará “BINGO”. En este caso emplee la fórmula CONTAR.SI marcando en el RANGO todas las celdas del tarjetón y como CRITERIO escriba directamente “X”.
Ilustración . Conteo de aciertos para el juego de Bingo
Ahora combine varias celdas y agregue en ella la fórmula SI cuya condición es comparar si el CONTEO DE ACIERTOS es igual a 15. Si esta condición es verdadera, se mostrará el mensaje “BINGO”, de lo contrario se mostrará el mensaje “SIGUE JUGANDO”. Resalte el mensaje cambiando el tamaño de letra y el color, además de aplicar ALINEAR EN EL MEDIO.
Ilustración . Mensaje ganador para el juego de Bingo
El resultado final deberá verse como se muestra a continuación:
Ilustración . Diseño final para el ejercicio 3
Quinto paso: Protección de celdas y hojas
Seleccione las celdas en las cuales el jugador ingresará los aciertos encontrados (puede seleccionar varias celdas no continuas manteniendo presionado la tecla CTRL) y pulse con el botón derecho del mouse para desplegar la ventana FORMATO DE CELDAS.
Una vez desplegada la ventana, diríjase a la ficha PROTEGER y desactive la opción BLOQUEADA (en la figura siguiente se resaltan las celdas que se desbloquearán con un color amarillo). Este paso es necesario para poder seguir editando las celdas una vez se proteja la hoja. Luego, en el menú REVISAR, pulse sobre el botón PROTEGER HOJA y desmarque la opción SELECCIONAR CELDAS BLOQUEADAS.
Ilustración . Desbloqueo de celdas para el ejercicio 3
Sexto paso: Prueba de la aplicación
Realice una prueba completa del juego. En caso de ganar se deberá mostrar el mensaje “BINGO”.
4. DISEÑO DEL JUEGO DE LAS PREGUNTAS
Objetivo: Desarrollar un ejemplo completo sobre el juego de las preguntas.
Primer paso: Creación de la portada
En la HOJA1 seleccione todas las celdas, pulsando en el botón SELECCIONAR TODO, localizado en la esquina superior izquierda del área de trabajo, y aplique un color azul claro como relleno de las celdas. Cambie el nombre de la hoja por PORTADA.
Ilustración . Área de trabajo de Microsoft® Excel 2010
Ubíquese en la celda B2 y escriba el título “EL JUEGO DE LAS PREGUNTAS”. Centre el texto teniendo en cuenta el ancho visible del área de trabajo (empleé el botón COMBINAR Y CENTRAR). Aumente el tamaño de la fuente a su consideración.
Ilustración . Título del Juego de las Preguntas
Agregue además el subtítulo “BIENVENIDO” en color rojo como se muestra a continuación.
Ilustración . Encabezado del ejercicio 4
Más abajo, agregue los campos NOMBRE y TEMÁTICA, con espacio para que el usuario ingrese su nombre completo y seleccione el tema del juego. Modifique los formatos de las celdas con en la imagen siguiente.
Ilustración . Campos nombre y temática
Sitúese en la celda donde se digitará el NOMBRE, y en la ficha DATOS pulse en el botón VALIDACIÓN DE DATOS. En la ventana desplegada modifique los campos de la ficha CONFIGURACIÓN como se muestra a continuación:
Ilustración . Validación de datos
Luego, en la ficha MENSAJE DE ERROR escriba en el campo TÍTULO la palabra “MENSAJE” y en el MENSAJE DE ERROR el siguiente texto:
Solo puede escribir máximo 30 caracteres como máximo. Por favor corrija el error.
Para seleccionar la TEMÁTICA deberá crear una hoja denominada OCULTO, donde a partir de la celda B2 escriba las opciones disponibles en el juego. Para simplificar el ejercicio se optó por mostrar dos temas: HISTORIA y GEOGRAFÍA.
Ilustración . Opciones disponibles para la temática del juego
Regrese a la hoja PORTADA e inserte un CUADRO COMBINADO (CONTROL DE FORMULARIO) en el espacio donde el usuario seleccionará el tema del juego.
Ilustración . Control de cuadro combinado
Pulse el botón derecho del mouse sobre el CONTROL y elija la opción FORMATO DE CONTROL. En el RANGO DE ENTRADA de la ficha CONTROL seleccione el rango de celdas de la hoja OCULTO correspondientes a los temas del juego.
Ilustración . Control de cuadro combinado programado
Para finalizar la PORTADA, inserte un botón de hipervínculo. En el menú INSERTAR, seleccione una FORMA rectangular y dibújela en una esquina inferior del área visible de la portada. Agregue a la FORMA el texto “CONTINUAR>>”. Cambie el color de la FORMA dándole el aspecto de un botón (pruebe varias combinaciones de colores y contrastes en el menú FORMATO que se activa al seleccionar una FORMA) y ajuste el tamaño de letra a su contorno. El botón deberá contener un HIPERVÍNCULO que salte a una nueva hoja denominada PREGUNTAS en la celda B2.
Ilustración . Diseño final de la portada del Juego de las Preguntas
Segundo paso: Diseño de las preguntas en la hoja OCULTO
En el caso del juego de las preguntas presentado en este ejemplo se dispondrá de 5 preguntas por tema tipo verdadero o falso. A partir de la celda D2 de la hoja OCULTO escriba las siguientes aseveraciones con sus respuestas correctas.
Ilustración . Preguntas con sus respectivas respuestas para el ejercicio 4
Para llevar un registro de las acciones tomadas por el usuario (TEMÁTICA y RESPUESTAS), digite la siguiente tabla en la hoja.
Ilustración . Registro de las respuestas por pregunta
La hoja OCULTO deberá verse así:
Ilustración . Diseño final de la hoja control
Para finalizar este paso, vincule el CONTROL para la TEMÁTICA de la hoja PORTADA a la hoja OCULTA. Para realizarlo, desde la hoja PORTADA pulse sobre el CONTROL (CUADRO COMBINADO) con el botón derecho del mouse y haga click en FORMATO DE CONTROL.
En la ficha CONTROL, VINCULE LA CELDA para el registro de la TEMÁTICA (H2) que está en la hoja OCULTO.
Ilustración . Vinculación de celdas para el control de cuadro combinado
El resultado de esta acción se observa al seleccionar uno de los dos temas disponible en la hoja PORTADA. Al marcar sobre HISTORIA en la hoja OCULTO se mostrará el valor 1; el valor 2 corresponderá al tema GEOGRAFÍA.
Ilustración . Prueba del vínculo de celdas con el control de cuadro combinado
Tercer paso: Diseño de la hoja PREGUNTAS
En la hoja PREGUNTAS aplique el mismo color de fondo de la PORTADA. Seleccione un rango de celdas continuas a partir de la celda B2, asegurando que el ancho del rango abarque la zona visible de la hoja, COMBÍNELAS y ALINEE EL TEXTO AL MEDIO.
Ilustración . Formato para la hoja preguntas
Digite un condicional que muestre el tema del juego marcado por el usuario. Si la opción de la TEMÁTICA es 1 se mostrará la palabra “HISTORIA”, si es 2 se mostrará “GEOGRAFÍA”.
Ilustración . Automatización del título de la hoja preguntas para el ejercicio 4
Ilustración . Diagrama de flujo del condicional relacionado con el temario
Aumente el tamaño de la letra para resaltar el título de la hoja. Realice una prueba para verificar que el título se modifica al cambiar la opción TEMÁTICA en la hoja PORTADA.
Diseñe el siguiente esquema para las preguntas y respuestas.
Ilustración . Esquema de preguntas para el ejercicio 4
Para mostrar las preguntas de acuerdo a la TEMÁTICA, deberá ingresar un condicional por cada una de ellas referenciando el siguiente diagrama de flujo.
Ilustración . Diagrama de flujo del condicional para mostrar las preguntas según área temática
En el primer caso se establece la condición de equivalencia entre el título y la palabra “HISTORIA”. Si ambos valores coinciden se mostrará la pregunta de historia número 1, en caso contrario aparecerá la pregunta de geografía número 1.
Ilustración . Automatización de las preguntas
Observe que se fijó la celda que contiene el título. Esta acción se realizó con el fin de poder arrastrar la celda con la fórmula condicional para el resto de las preguntas. Verifique que se muestren las preguntas de acuerdo a la TEMÁTICA. Modifique el tamaño del texto de las celdas.
Ilustración . Prueba sobre el listado de preguntas según el área temática
Para las respuestas inserte dos BOTONES DE OPCIÓN (VERDADERO y FALSO) por pregunta dentro de su respectivo CUADRO COMBINADO.
Ilustración . Cuadro combinados por pregunta para el ejercicio 4
Deberá vincular cada BOTÓN DE OPCIÓN a su celda respectiva de respuesta que se encuentra en la hoja OCULTO. En este ejemplo, el primer botón (VERDADERO) se vinculará a la celda H2. Esta operación relacionará automáticamente el segundo botón de la pregunta 1 (FALSO) con la misma celda (H2).
Ilustración . Vinculación de los cuadros combinados con las celtas de respuesta en la hoja control
Realice este procedimiento para cada BOTÓN DE OPCIÓN. Cada respuesta equivaldrá a un valor numérico (1 para VERDADERO y 2 para FALSO).
Ilustración . Prueba de los cuadros combinando
Adicione un condicional por respuesta (a un lado del valor numérico), para mostrar la expresión de la respuesta en palabras (VERDADERO o FALSO).
Ilustración . Valoración de las respuestas en el Juego de las Preguntas
Cuarto paso: Diseño de la hoja RESULTADOS
Cree una nueva hoja llamada RESULTADOS. Basado en el mismo diseño de la hoja PREGUNTAS digite el título “RESULTADO DEL JUEGO” y agregue la siguiente tabla de resultados.
Ilustración . Esquema general de la hoja resultados para el ejercicio 4
En el caso de que coincida la respuesta correcta por TEMÁTICA con la opción marcada por el usuario (ambos datos se encuentran en la hoja CONTROL) se mostrará el mensaje “CORRECTO”, en caso contrario, se mostrará la palabra “INCORRECTO”. Fije la celda correspondiente al valor de la TEMÁTICA y arrastre.
Ilustración . Programación de la hoja de resultados
Ilustración . Diagrama de flujo del condicional que establece si las respuestas son correctas o incorrectas
La puntuación final es igual al total de respuestas correctas. Calcúlela usando la función CONTAR.SI.
Ilustración . Programación de la puntuación final
Quinto paso: Protección de celdas y hojas
Antes de proteger las hojas adiciones un botón en la hoja PREGUNTAS con un hipervínculo a la hoja RESULTADOS. Proteja solo las hojas PORTADA, PREGUNTAS y RESPUESTAS. Desmarque la opción TÍTULOS que se encuentra en la ficha VISTA para cada hoja. Para finalizar oculte la hoja OCULTO y realice una prueba de la aplicación.
Ilustración . Prueba final del Juego de las Preguntas
5. CREACIÓN DE VENTANAS EMPLEANDO VISUAL BASIC PARA APLICACIONES
Objetivo: Desarrollar un ejercicio básico que muestre los enlaces entre las ventanas (o formularios) diseñados en Visual Basic for Application (VBA) y Microsoft® Excel.
Primer paso: Diseño del formulario
En este ejemplo se diseñará un formulario sencillo para demostrar el uso de los controles y su enlace con una hoja de cálculo. Para ello cree un USERFORM en VBA e inserte los siguientes controles:
3 ETIQUETAS
1 CUADRO DE TEXTO
1 CUADRO COMBINADO
1 CASILLA DE VERIFICACIÓN
2 BOTONES DE OPCIÓN
1 IMAGEN
1 BOTÓN DE COMANDO
Organícelos en la ventana como se muestra a continuación:
Ilustración . Esquema del formulario para el ejercicio 5
Pulse sobre el USERFORM1 y cambie el texto del título de la ventana a “INTERFAZ DE PRUEBA” modificando la propiedad CAPTION. Cambie el color de fondo a un azul claro mediante la propiedad BACKCOLOR.
Ilustración . Cambio de color de la ventana
Cambie la propiedad CAPTION de las etiquetas LABEL1, 2 y 3 a “NOMBRE”, “CIUDAD ORIGEN” y “DESTINO”, respectivamente. Modifique el color de las etiquetas al mismo color de fondo de la ventana con la propiedad BACKCOLOR. Active la opción NEGRITA de la propiedad FONT.
Ilustración . Modificación de la propiedad caption de las etiquetas
Limite el número de caracteres del CUADRO DE TEXTO a 20 con la propiedad MAXLENGTH. Para los BOTONES DE OPCIÓN (OPTIONBUTTON 1 y 2) cambie el valor de la propiedad CAPTION a “NACIONAL” e “INTERNACIONAL”. Cambie el color de los dos controles a azul claro.
Ilustración . Modificación de la propiedad caption de los botones de opción
En el control IMAGEN seleccione una figura que represente un avión o un viaje, empleando la propiedad PICTURE. Seleccione la opción 1 (FMPICTURESIZEMODESTRETCH) de la propiedad PICTURESIZEMODE. Para finalizar el diseño de la ventana, modifique también la propiedad CAPTION de la CASILLA DE VERIFICACIÓN y el BOTÓN DE COMANDO a “VIAJE DE TURISMO” y “ACEPTAR”, respectivamente. Cambie el color de la CASILLA DE VERIFICACIÓN a azul claro.
Ilustración . Diseño final del formulario para el ejercicio 5
Segundo paso: Programación del CUADRO COMBINADO (COMBOBOX)
El COMBOBOX1 que se encuentra en la ventana deberá ser programado. En este caso se desea mostrar un listado corto de ciudades (Cartagena, Barranquilla y Santa Marta).
Para realizar este paso haga doble click en el formulario y en la ventana de código seleccione el evento ACTIVATE. Escriba el siguiente código (en color rojo):
Ilustración . Programación de controles ComboBox
Private Sub UserForm_Activate()
ComboBox1.Clear
ComboBox1.AddItem ("CARTAGENA")
ComboBox1.AddItem ("BARRANQUILLA")
ComboBox1.AddItem ("SANTA MARTA")
End Sub
El código borra primero el contenido del COMBOBOX1 y luego agregue las tres opciones disponibles (esto ocurre cuando se activa la ventana).
Tercer paso: Activar el formulario desde la hoja de cálculo
Desde la hoja de MS® Excel agregué un BOTÓN DE COMANDO tipo CONTROL ACTIVEX con el texto FORMULARIO en la propiedad CAPTION, como se puede observar en la siguiente ilustración (ajuste la propiedad FONT para resaltar el texto del botón).
Ilustración . Control botón de comando tipo Active X
Haga doble click en el botón y agregue el siguiente código:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Pruebe el botón, desactivando antes el botón MODO DISEÑO de la ficha PROGRAMADOR y verifique que el COMBOBOX1 muestre las opciones programadas en el paso anterior.
Cuarto paso: Traslado de los datos del formulario a la hoja de cálculo
Antes de programar el traslado de datos entre el formulario y la hoja de cálculo, cree la siguiente tabla en la hoja donde se encuentra el BOTÓN DE COMANDO.
Ilustración . Campos nombre, destino, ciudad de origen y viaje de turismo para el ejercicio 5
Regrese nuevamente al formulario en Visual Basic y haga doble click en el botón ACEPTAR. Ingrese el siguiente código.
Private Sub CommandButton2_Click()
Cells(9, 6).Value = TextBox1.Text
Cells(9, 11).Value = ComboBox1.Text
If OptionButton1.Value = True Then
Cells(10, 6).Value = "NACIONAL"
Else
Cells(10, 6).Value = "INTERNACIONAL"
End If
If CheckBox1.Value = True Then
Cells(10, 11).Value = "SI"
Else
Cells(10, 11).Value = "NO"
End If
UserForm1.Hide
End Sub
A continuación se explicará el código anterior en detalle.
Cells(9, 6).Value = TextBox1.Text
Permite trasladar el texto contenido en el TEXTBOX1 a la celda correspondiente a la fila 9 y columna número 6 (F9).
Ilustración . Dirección de la celda correspondiente al campo nombre
Cells(9, 11).Value = ComboBox1.Text
Igual que en el caso anterior, se trastada el texto actual del COMBOBOX1 a la celda K9.
If OptionButton1.Value = True Then
Cells(10, 6).Value = "NACIONAL"
Else
Cells(10, 6).Value = "INTERNACIONAL"
End If
Este fragmento de código representa un condicional donde se pregunta si el primer OPTIONBUTTON1 se encuentra seleccionado (VALUE = TRUE). En este caso se mostrará en la celda F10 el texto “NACIONAL” y en caso contrario el texto “INTERNACIONAL”. Observe que el condicional IF THEN ELSE debe finalizar con el comando END IF.
If CheckBox1.Value = True Then
Cells(10, 11).Value = "SI"
Else
Cells(10, 11).Value = "NO"
End If
Nuevamente se emplea el condicional IF THEN ELSE para evaluar si el CHECKBOX1 se encuentra marcado. Si esto ocurre (VALUE = TRUE) se muestra el texto “SI”, en caso contrario se muestra “NO”.
UserForm1.Hide
Esta última línea de código oculta la ventana. Pulse el BOTÓN DE COMANDO de la hoja de cálculo y pruebe el formulario completo.
Quinto paso: Protección de celdas y hojas
Seleccione las celdas en las cuales el usuario ingresará los datos y pulse con el botón derecho del mouse para desplegar la ventana FORMATO DE CELDAS. Una vez desplegada la ventana, diríjase a la ficha PROTEGER y desactive la opción BLOQUEADA. Luego, en el menú REVISAR, pulse sobre el botón PROTEGER HOJA y desmarque la opción SELECCIONAR CELDAS BLOQUEADAS. Desmarque también la opción TÍTULOS que se encuentra en la ficha VISTA.
Realice una prueba final de la aplicación donde ingrese información al libro de Excel a través del formulario.
6. INGRESO DE DATOS EN UNA TABLA EMPLEANDO VISUAL BASIC PARA APLICACIONES
Objetivo: Desarrollar un ejercicio completo donde se permita el ingreso de datos en una tabla en Microsoft® Excel empleando Visual Basic para Aplicaciones.
Primer paso: Predefinir los requisitos (campos)
La aplicación corresponde al registro y actualización de una tabla que contiene información sobre las personas que ingresan y salen de una edificación.
La tabla debe contener los siguientes campos:
Nombre(s) y Apellidos
Tipo de documento de identidad
Número del documento
Fecha
Hora entrada
Hora salida
Estado (adentro o afuera): En caso de no registrar hora de salida, el estado será adentro, de lo contrario el estado será afuera.
Un ejemplo de la tabla se puede observar en la siguiente ilustración (comience desde la celda B2).
Ilustración . Esquema de la tabla para el ejercicio 6
Segundo paso: Diseño del formulario principal
Diseñe el siguiente formulario desde la consola de Microsoft® Excel Visual Basic para Aplicaciones, basado en los campos mencionados en el paso anterior.
Ilustración . Diseño del formulario para el ingreso de datos
Tercer paso: Programación preliminar del formulario
Antes de pasar a la programación de los botones del formulario, debemos programar el ComboBox1 (control de listado), para que muestre las opciones: C.C., C.E. y T.I. (Cédula de Ciudadanía, Cédula de Extranjería y Tarjeta de Identidad). Haga doble click en el formulario y en la ventana de código seleccione el procedimiento ACTIVATE. Escriba el siguiente código (en color rojo):
Private Sub UserForm_Activate()
ComboBox1.Clear
ComboBox1.AddItem ("C.C.")
ComboBox1.AddItem ("C.E.")
ComboBox1.AddItem ("T.I.")
End Sub
El código borra primero el contenido del COMBOBOX1 y luego agrega las tres opciones disponibles (esto ocurre cuando se activa la ventana).
Cuarto paso: Activar el formulario desde la hoja de cálculo
Desde la hoja de Microsoft® Excel donde se encuentra la tabla creada en el paso 1, agregué un botón justo al lado de la tabla (Control Active X) llamado FORMULARIO, como se observa en la siguiente ilustración.
Ilustración . Botón de comando tipo Active X para activar el formulario desde Microsoft® Excel
Haga doble click en el botón y agregue el siguiente código:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Pruebe el botón y verifique el COMBOBOX1 muestre las opciones programadas en el paso anterior.
Quinto paso: Programar el ingreso de datos
Regrese nuevamente al formulario en Visual Basic y haga doble click en el botón ACTUALIZAR. Ingrese el siguiente código.
Private Sub CommandButton2_Click()
For I = 1 To 100
If Cells(I + 2, 2).Value = "" Then
Cells(I + 2, 2).Value = I
Cells(I + 2, 3).Value = TextBox1.Text
Cells(I + 2, 4).Value = TextBox2.Text
Cells(I + 2, 5).Value = ComboBox1.Text
Cells(I + 2, 6).Value = TextBox3.Text
Cells(I + 2, 7).Value = TextBox4.Text
Cells(I + 2, 8).Value = TextBox5.Text
Cells(I + 2, 9).Value = TextBox6.Text
If TextBox6.Text = "" Then
Cells(I + 2, 10).Value = "Adentro"
Else
Cells(I + 2, 10).Value = "Afuera"
End If
Exit For
End If
Next
End Sub
En código se detalla el envío de datos desde los controles dispuestos en el formulario a las respectivas celdas ubicadas en Excel.
Sexto paso: Programar el botón Borrar
En este caso se optará por un botón para borrar solo los campos de textos del formulario. Haga doble click en el botón BORRAR e ingrese el siguiente código.
Private Sub CommandButton3_Click()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
ComboBox1.Text = ""
End Sub
Séptimo paso: Programar el botón Buscar
Este botón realizará una búsqueda en la tabla hasta encontrar un número de identificación coincidente. Antes de realizar la programación, modifique el formulario, para que quede como el que se muestra a continuación:
Ilustración . Formulario para realizar la búsqueda de registros
Haga doble click en el botón BUSCAR y agregue el siguiente código.
Private Sub CommandButton1_Click()
For I = 1 To 100
If TextBox7.Text = Cells(I + 2, 6).Value Then
TextBox1.Text = Cells(I + 2, 3).Value
TextBox2.Text = Cells(I + 2, 4).Value
ComboBox1.Text = Cells(I + 2, 5).Value
TextBox3.Text = Cells(I + 2, 6).Value
TextBox4.Text = Cells(I + 2, 7).Value
TextBox5.Text = Cells(I + 2, 8).Value
TextBox6.Text = Cells(I + 2, 9).Value
Exit For
End If
Next
End Sub
En el código se muestra un ciclo FOR que abarca 100 registros (para I igual a 1 hasta 100), con un condicional inicial que busca la coincidencia entre el texto del TEXTBOX7 y la celda cuyo contenido es el número de identificación.
Una vez lograda la coincidencia, se extraen los datos del registro y se trasladan a los correspondientes campos ubicados en el formulario de BUSQUEDA, finalizando el ciclo con la función EXIT FOR.
Realice una prueba completa de la aplicación, ingresando algunos registros y luego ubicándolos con el formulario de BUSQUEDA.
7. MANEJO DE DATOS EMPLEANDO VISUAL BASIC PARA APLICACIONES
Objetivo: Desarrollar un ejercicio completo relacionado con el manejo de datos en Microsoft® Excel empleando Visual Basic para Aplicaciones.
Primer paso: Predefinir los requisitos (campos)
La aplicación corresponde al ingreso y actualización para el registro de notas de una asignatura manejada por un docente.
La tabla debe contener los siguientes campos:
Nombre(s) (admite máximo 20 caracteres)
Apellidos (admite máximo 20 caracteres)
Código del estudiante (admite máximo 10 caracteres)
Programa al que pertenece
Nota 1
Nota 2
Nota 3
Nota Final
Un ejemplo de la tabla se puede observar en la siguiente ilustración (comience desde la celda B2).
Ilustración . Tabla dispuesta para el ejercicio 7
Segundo paso: Formulario para el ingreso de un nuevo estudiante
Diseñe el siguiente formulario desde la consola de Microsoft® Visual Basic for Application; los campos se refieren a la información básica del estudiante.
Ilustración . Diseño del formulario para el ejercicio 7
Cambie la MAXLENGTH propiedad de cada TEXTBOX (Cuadro de Texto) para que admita el número máximo de caracteres descrito en el paso anterior. Por ejemplo, el TEXTBOX1 corresponde al nombre, por tanto la propiedad del MAXLENGTH debe quedar como se muestra en la siguiente ilustración.
Ilustración . Propiedad Maxlength de los controles textbox
Tercer paso: Programación preliminar del formulario para el ingreso de un estudiante
Antes de pasar a la programación del botón INGRESAR del formulario, debemos programar el COMBOBOX1 (control de listado), para que muestre los diferentes programas disponibles: Administración Industrial, Contaduría Pública, Administración de Empresas y Economía. Haga doble click en el formulario y en la ventana de código seleccione el procedimiento ACTIVATE. Escriba el siguiente código (en color rojo):
Private Sub UserForm_Activate()
ComboBox1.Clear
ComboBox1.AddItem ("Administración Industrial")
ComboBox1.AddItem ("Contaduría Pública")
ComboBox1.AddItem ("Administración de Empresas")
ComboBox1.AddItem ("Economía")
End Sub
El comando CLEAR borra primero el contenido del COMBOBOX1 y luego, mediante el comando ADDITEM, se agregan las opciones disponibles (esto acurre cuando se activa la ventana).
Cuarto paso: Activar el formulario desde la hoja de cálculo
Desde la hoja de Microsoft® Excel donde se encuentra la tabla creada en el paso 1, agregué un botón justo al lado de la tabla (tipo Control Active X) llamado INGRESO ESTUDIANTE, como se observa en la siguiente ilustración.
Ilustración . Botón tipo Active X para el despliegue del formulario de ingreso de datos para el ejercicio 7
Haga doble click en el botón y agregue el siguiente código:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Desactive el modo de diseño y pruebe el botón haciendo click sobre él. Verifique si el COMBOBOX1 muestra las opciones programadas en el paso anterior.
Quinto paso: Programar el ingreso de estudiante
Regrese nuevamente al formulario en Visual Basic y haga doble click en el botón INGRESAR del formulario. Digite el siguiente código inicial:
Private Sub CommandButton1_Click()
For I = 1 To 50
If Cells(I + 2, 2).Value = "" Then
Cells(I + 2, 2).Value = TextBox1.Text
Cells(I + 2, 3).Value = TextBox2.Text
Cells(I + 2, 4).Value = TextBox3.Text
Cells(I + 2, 5).Value = ComboBox1.Text
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
ComboBox1.Text = ""
Exit For
End If
Next
End Sub
El ciclo FOR limita el ingreso de estudiantes a un total de 50. El ciclo inicia con la localización de una celda vacía para trasladar la información del formulario, a cada celda correspondiente a la fila vacía. Además, una vez ingresados los datos, se procederá a borrar el formulario, con el fin de agilizar el ingreso de nuevos registros.
Regrese nuevamente a la hoja de Excel y realice una prueba completa ingresando un nuevo estudiante.
Sexto paso: Formulario para el ingreso de notas
Cree un nuevo formulario de acuerdo a la siguiente ilustración (USERFORM2).
Ilustración . Diseño del formulario para el ingreso de notas
Desactive solo los TEXTBOX 2, 3 y 4 (NOMBRE(S), APELLIDOS Y PROGRAMA), modificando la propiedad ENABLED a FALSE. Esto impedirá que se modifiquen los datos arrojados en la búsqueda.
Ilustración . Protección de un control textbox
Regrese a la hoja de Microsoft® Excel donde se encuentra la tabla creada en el paso 1, y agregué un nuevo botón justo al lado de la tabla (Tipo Control Active X) llamado ACTUALIZAR NOTAS, como se observa en la siguiente ilustración.
Ilustración . Botón tipo Active X para desplegar el formulario de ingreso de notas
Haga doble click en el botón y agregue el siguiente código:
Private Sub CommandButton2_Click()
UserForm2.Show
UserForm2.TextBox1.Text = ""
UserForm2.TextBox2.Text = ""
UserForm2.TextBox3.Text = ""
UserForm2.TextBox4.Text = ""
UserForm2.TextBox5.Text = ""
UserForm2.TextBox6.Text = ""
UserForm2.TextBox7.Text = ""
End Sub
En este caso, además de mostrar la ventana, se borrarán todos los TEXTBOX del USERFORM2. Desactive el modo de diseño y pruebe el botón haciendo click sobre él.
Séptimo paso: Programar el botón Buscar
Antes de ingresar una nota, se procederá a localizar el estudiante mediante su código. Haga doble click en el botón BUSCAR y agregue el siguiente código.
Private Sub CommandButton1_Click()
For I = 1 To 50
If TextBox1.Text = Cells(I + 2, 4).Value Then
TextBox2.Text = Cells(I + 2, 2).Value
TextBox3.Text = Cells(I + 2, 3).Value
TextBox4.Text = Cells(I + 2, 5).Value
TextBox5.Text = Cells(I + 2, 6).Value
TextBox6.Text = Cells(I + 2, 7).Value
TextBox7.Text = Cells(I + 2, 8).Value
Exit For
End If
Next
End Sub
Octavo paso: Programar el botón Actualizar
Dado que ya se tiene certeza de la existencia o no del estudiante, se da la opción de ingresar las notas. Haga doble click en el botón ACTUALIZAR e ingrese el siguiente código.
Private Sub CommandButton2_Click()
For I = 1 To 50
If TextBox1.Text = Cells(I + 2, 4).Value Then
Cells(I + 2, 6).Value = TextBox5.Text
Cells(I + 2, 7).Value = TextBox6.Text
Cells(I + 2, 8).Value = TextBox7.Text
Cells(I + 2, 9).Value = (Val(TextBox5.Text) + Val(TextBox6.Text) + Val(TextBox7.Text)) / 3
Exit For
End If
Next
End Sub
Esta rutina busca nuevamente el código del estudiante y luego traslada las notas digitadas en la hoja de cálculo. Además se calcula el promedio (empleando la opción VAL para cada TEXTBOX).
Noveno paso: Pruebe su programa
Para probar la aplicación siga los siguientes pasos:
1.Inicie ingresando los siguientes estudiantes:
Nombre(s): JUAN CARLOS
Apellidos: VERGARA SCHMALBACH
Código: 493202011
Programa: Administración Industrial
Nombre(s): PEDRO
Apellidos: RODRÍGUEZ PÉREZ
Código: 492341234
Programa: Administración Industrial
Nombre(s): JULIAN
Apellidos: ALFONZO LÓPEZ
Código: 3504030012
Programa: Administración de Empresas
2.Localiza al estudiante de código 492341234
3.Ingresa las notas
Nota 1 4,1
Nota 2 3,7
Nota 3 4,2
4.Ajusta el ancho de las columnas y cantidad de decimales. El resultado final debería verse como en la siguiente ilustración.
Ilustración . Resultado final de la prueba realizada al ejercicio 7
8. DISEÑO DE UNA APLICACIÓN PARA FACTURAR EN UNA PEQUEÑA EMPRESA
Objetivo: Desarrollar un ejercicio completo para el control y registro de la FACTURACIÓN para una pequeña empresa, aplicando herramientas vistas de MS® Excel mediante el uso Visual Basic para Aplicaciones, formatos, condicionales, fórmulas y funciones.
Primer paso: Diseño de la portada
Inicie con un documento en blanco en MS® Excel y asigne los nombres PORTADA, FACTURAR, REGISTRO y CONFIGURAR a cada hoja. La portada debe contener una pequeña introducción sobre la aplicación y tres links (puede emplear hipervínculos) en forma de botón, que deben dirigir al usuario a cada una de las hojas que hacen parte del libro (ver la ilustración contigua).
Ilustración . Diseño de la portada para el ejercicio 8
Elimine 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.
Ilustración . Desmarque de las opciones de visualización de líneas de división y encabezados en Microsoft® Excel 2010
Una vez establecidos los hipervínculos, proceda a proteger la hoja desmarcando la opción SELECCIONAR CELDAS BLOQUEADAS.
Ilustración . Protección de la portada para el ejercicio 8
Segundo paso: Diseño de la plantilla de registro de productos
En la hoja CONFIGURAR diseñe una tabla para el registro de productos. Dicha tabla debe contener los siguientes campos (ver ilustración):
Código
Producto (admite máximo 20 caracteres)
Precio
Ilustración . Tabla de registro de productos
Tercer paso: Formulario para el registro de productos
Inserte un formulario en Visual Basic para Aplicaciones, que contenga los campos mencionados en el paso anterior como se muestra en la ilustración.
Ilustración . Formulario para el registro de productos
Programe el código del botón INGRESAR con la siguiente rutina. Observe que en este caso solo se admitirán hasta 100 productos.
Private Sub CommandButton1_Click()
For I = 1 To 100
If Cells(I + 2, 2).Value = "" Then
Cells(I + 2, 2).Value = TextBox1.Text
Cells(I + 2, 3).Value = TextBox2.Text
Cells(I + 2, 4).Value = TextBox3.Text
Exit For
End If
Next
End Sub
Inserte la siguiente rutina para programar el botón BORRAR.
Private Sub CommandButton2_Click()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub
Cuarto paso: Activar el formulario desde la hoja de cálculo
Desde la hoja de Microsoft® Excel donde se encuentra la tabla creada en el paso 2, agregué un botón justo al lado de la tabla (Tipo Control Active X) llamado INGRESAR PRODUCTO, como se observa en la siguiente ilustración.
Ilustración . Botón para la activación del formulario de registro de productos
Incluya el siguiente código en la programación del botón.
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Quinto paso: Formato de la factura
Diseñe el formato para el registro de la factura de venta. Este formato admitirá máximo 5 productos. Incluya los siguientes campos:
Consecutivo
Cliente (admite máximo 20 caracteres)
Identificación
Código
Producto
Precio
Cantidad
Valor Total
Subtotal
Descuento
IVA
Total
Ilustración . Esquema general de una factura para el ejercicio 8
Sexto paso: Formulario para el registro de una factura
Diseñe un nuevo formulario (USERFOM2) que contenga los campos mencionados en el paso anterior, exceptuando el consecutivo.
Ilustración . Formulario para el registro de facturas
Antes de pasar a programar cada botón, bloqueé los TEXTBOX correspondientes a PRODUCTO y PRECIO (ya que estos son el resultado del registro de productos). Para realizar el bloqueo de un componente, deberá seleccionarlo y colocar la opción de la propiedad ENABLED en FALSE.
Ilustración . Propiedad Enabled de un control TextBox
Limite la longitud máxima aceptada para el nombre del cliente modificando la propiedad MAXLENGTH en 20.
Ilustración . Propiedad Maxlehgth de un control TextBox
Séptimo paso: Activar el formulario desde la hoja de cálculo
Regrese a la hoja de MS® Excel donde se encuentra la tabla creada en el paso 5, y agregué un nuevo botón justo al lado de la tabla (Tipo Control Active X) llamado INGRESAR, como se observa en la siguiente ilustración.
Ilustración . Botón para la activación del formulario de registro de facturas
Incluya el siguiente código en la programación del botón.
Private Sub CommandButton1_Click()
UserForm2.Show
End Sub
Octavo paso: Programación de los botones del formulario
Cada botón denominado OK del formulario USERFORM2, tendrá la función de buscar el CÓDIGO digitado en la base de datos de registro de productos. Si el código es localizado, se mostrarán en los TEXTBOX correspondientes, la información sobre el NOMBRE del producto y su PRECIO. Por ejemplo, la programación para el primer botón es:
Private Sub CommandButton1_Click()
For I = 1 To 100
If TextBox3.Text = Sheets("Configurar").Cells(I + 2, 2) .Value Then
TextBox4.Text = Sheets("Configurar").Cells(I + 2, 3) .Value
TextBox5.Text = Sheets("Configurar").Cells(I + 2, 4) .Value
Exit For
End If
Next
End Sub
Para el Segundo y tercer botón el código será:
Private Sub CommandButton2_Click()
For I = 1 To 100
If TextBox7.Text = Sheets("Configurar").Cells(I + 2, 2) .Value Then
TextBox8.Text = Sheets("Configurar").Cells(I + 2, 3) .Value
TextBox9.Text = Sheets("Configurar").Cells(I + 2, 4) .Value
Exit For
End If
Next
End Sub
Private Sub CommandButton3_Click()
For I = 1 To 100
If TextBox11.Text = Sheets("Configurar").Cells(I + 2, 2).Value Then
TextBox12.Text = Sheets("Configurar").Cells(I + 2, 3).Value
TextBox13.Text = Sheets("Configurar").Cells(I + 2, 4) .Value
Exit For
End If
Next
End Sub
Continúe con la programación de los botones 4 y 5, manteniendo la secuencia de los TEXTBOX. Una vez que el usuario haya digitado la información a facturar, deberá pulsar en el botón INGRESAR, cuya función es la de trasladar los datos del formulario a la hoja de cálculo. La programación del botón se muestra a continuación.
Private Sub CommandButton6_Click()
Cells(9, 3).Value = TextBox1.Text
Cells(10, 3).Value = TextBox2.Text
Cells(13, 2).Value = TextBox3.Text
Cells(13, 3).Value = TextBox4.Text
Cells(13, 4).Value = TextBox5.Text
Cells(13, 5).Value = TextBox6.Text
Cells(14, 2).Value = TextBox7.Text
Cells(14, 3).Value = TextBox8.Text
Cells(14, 4).Value = TextBox9.Text
Cells(14, 5).Value = TextBox10.Text
Cells(15, 2).Value = TextBox11.Text
Cells(15, 3).Value = TextBox12.Text
Cells(15, 4).Value = TextBox13.Text
Cells(15, 5).Value = TextBox14.Text
Cells(16, 2).Value = TextBox15.Text
Cells(16, 3).Value = TextBox16.Text
Cells(16, 4).Value = TextBox17.Text
Cells(16, 5).Value = TextBox18.Text
Cells(17, 2).Value = TextBox19.Text
Cells(17, 3).Value = TextBox20.Text
Cells(17, 4).Value = TextBox21.Text
Cells(17, 5).Value = TextBox22.Text
Cells(2, 4).Value = Cells(2, 4).Value + 1
End Sub
Observe que la última línea de código ingresado incrementa el valor del CONSECUTIVO de la factura en 1.
Noveno paso: Fórmulas para el cálculo de los campos resultado en la Factura
Ingrese las fórmulas para el cálculo del valor total por artículo, subtotal, descuento, IVA y total. Coloque un descuento del 10% e IVA del 16%.
Ilustración . Fórmulas para determinar el Valor Total, Subtotal, Descuento, Iva y Total
Decimo paso: Tabla resumen
Diseñe una tabla en la hoja REGISTRO para el ingreso de los totales por factura que incluya los siguientes campos:
Factura (equivalente al consecutivo de la factura)
Total
Ilustración . Tabla de resumen de facturas
Undécimo paso: Botón para completar el registro de facturas
Desde la hoja REGISTRO agregué un nuevo botón justo al lado de la tabla (Tipo Control Active X) llamado ALMACENAR, como se observa en la siguiente ilustración.
Ilustración . Botón para el almacenaje de facturas en Microsoft® Excel
Digite el siguiente código:
Private Sub CommandButton2_Click()
For I = 1 To 100
If Sheets("Registro").Cells(I + 2, 2).Value = "" Then
Sheets("Registro").Cells(I + 2, 2).Value = Cells(2, 4).Value
Sheets("Registro").Cells(I + 2, 3).Value = Cells(22, 6).Value
Range("B13:E17").Select
Selection.ClearContents
Exit For
End If
Next
End Sub
Un aspecto nuevo para el lector es el comando RANGE(“”__””).SELECT y SELECTION.CLEARCONTENTS. El primero permite seleccionar un rango de celdas, mientras que el segundo comando, permite borrar las celdas anteriormente seleccionadas.
Para probar el funcionamiento de la aplicación realice un ejercicio completo, iniciando con el registro de varios productos.
9. DISEÑO DE UN LISTÍN TELEFÓNICO
Objetivo: Desarrollar un ejercicio para el diseño de un LISTÍN TELEFÓNICO con las funciones básicas para el ingreso, búsqueda, edición, eliminación e impresión de registros.
Primer paso: Diseño de la plantilla
Inicie este ejemplo con un documento en blanco en MS® Excel y diseñe una tabla que contenga los siguientes campos:
Número (No.)
Nombre(s) (Máximo 20 caracteres)
Apellidos (Máximo 20 caracteres)
Teléfono 1
Teléfono 2
Incluya dos botones (Tipo Control Active X) llamados REGISTRO e IMPRESIÓN. Un ejemplo de la plantilla podría ser como se observa en la siguiente ilustración.
Ilustración . Esquema general en Microsoft® Excel para el registro de un listín telefónico
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.
Ilustración . Opción para visualizar las líneas de división y encabezados en Microsoft® Excel 2010
Además, se utilizó la opción de inmovilización de paneles para fijar el encabezado, botones y campos de la tabla.
Ilustración . Opción inmovilizar paneles en Microsoft® Excel
Segundo paso: Diseño del formulario
Diseñe un formulario que contenga los campos mencionados en el paso anterior y agregue los botones INGRESAR, BUSCAR, EDITAR y ELIMINAR (ver la ilustración).
Ilustración . Formulario para el ingreso de datos en el Listín Telefónico
Modifique la propiedad MAXLENGTH de los TEXTBOX 1 y 2 para que admitan solo 20 caracteres. Haga doble click en el botón INGRESAR e incluya la siguiente rutina
Private Sub CommandButton1_Click()
For I = 1 To 100
If Cells(I + 10, 2).Value = "" Then
Cells(I + 10, 2).Value = I
Cells(I + 10, 3).Value = TextBox1.Text
Cells(I + 10, 4).Value = TextBox2.Text
Cells(I + 10, 5).Value = TextBox3.Text
Cells(I + 10, 6).Value = TextBox4.Text
Cells(I + 10, 7).Value = TextBox5.Text
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
Exit For
End If
Next
End Sub
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 = “”). Programe ahora el botón BUSCAR digitando la siguiente rutina. Esta secuencia indica una búsqueda por NOMBRE(S) de la persona.
Private Sub CommandButton2_Click()
For I = 1 To 100
If Cells(I + 10, 3).Value = TextBox1.Text Then
TextBox2.Text = Cells(I + 10, 4).Value
TextBox3.Text = Cells(I + 10, 5).Value
TextBox4.Text = Cells(I + 10, 6).Value
TextBox5.Text = Cells(I + 10, 7).Value
Exit For
End If
Next
End Sub
El botón EDITAR tiene la función de actualizar un cambio efectuado en los datos de la persona. La limitación de la actualización de los datos radica en que el campo NOMBRE (base de la búsqueda) no podrá ser modificado.
Private Sub CommandButton3_Click()
For I = 1 To 100
If Cells(I + 10, 3).Value = TextBox1.Text Then
Cells(I + 10, 4).Value = TextBox2.Text
Cells(I + 10, 5).Value = TextBox3.Text
Cells(I + 10, 6).Value = TextBox4.Text
Cells(I + 10, 7).Value = TextBox5.Text
Exit For
End If
Next
End Sub
En el botón ELIMINAR incluiremos una nueva rutina para eliminar una fila donde se encuentre un registro y restablecer el consecutivo de las filas.
Private Sub CommandButton4_Click()
For I = 1 To 100
If Cells(I + 10, 3).Value = TextBox1.Text Then
Cells(I + 10, 3).Select
Selection.EntireRow.Delete
Exit For
End If
Next
For I = 1 To 100
If Cells(I + 10, 2).Value <> "" Then
Cells(I + 10, 2).Value = I
End If
Next
End Sub
El primer ciclo PARA, detecta la coincidencia del nombre de la persona la cual se desea borrar del listín, y mediante el código SELECTION.ENTIREROW.DELETE se elimina la fila completa. El segundo ciclo, actualiza el consecutivo (No.) de cada registro, buscando aquellas celdas que no están vacías (CELLS(I + 10, 2).VALUE <> "") y actualizando su valor con la variable contadora I del ciclo PARA (este ciclo no incluye el comando EXIT FOR – SALIR DEL CICLO PARA).
Tercer 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()
UserForm1.Show
End Sub
Realice una prueba rápida sobre el funcionamiento de cada botón del formulario.
Cuarto paso: Opción de impresión de la plantilla
Para poder imprimir una hoja de cálculo en MS® Excel, incluya el siguiente código en el botón IMPRIMIR.
Private Sub CommandButton2_Click()
ActiveSheet.PrintOut
End Sub
Antes de imprimir una hoja, ajuste las opciones de impresión y visualización.
10. DISEÑO DE UNA APLICACIÓN PARA EL CONTROL DE VOTACIONES
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.
Ilustración . Portada para el ejercicio 10
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.
Ilustración . Opción para visualizar las líneas de división y encabezados en Microsoft® Excel 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.
Ilustración . Plantilla para el registro de sufragantes
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.
Ilustración . Formulario para el registro de sufragantes
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.
Ilustración . Referencia de celda de la celda de Busqueda
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. Puede diseñar la plantilla de forma parecida a la que se muestra en la siguiente ilustración.
Ilustración . Plantilla para el registro de las votaciones
Ingrese la función SUMA para calcular el número total de los votos. Rellene los votos por candidato con valores de cero.
Ilustración . Tabla resumen de votos por candidato
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 (ver ilustración).
Ilustración . Diseño del formulario para el registro de votos
Haga doble click en la propiedad PICTURE para desplegar una ventana y poder seleccionar la imagen del candidato.
Ilustración . Propiedad Picture para insertar imágenes en un formulario
Modifique la propiedad PICTURESIZEMODE a 1 – FMPICTURESIZEMODESTRETCH para poder mostrar la imagen completa en el recuadro del control.
Ilustración . Opciones disponibles para la propiedad PictureSizeMode
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. En la siguiente ilustración se puede observar la ventana completa.
Ilustración . Diseño final del formulario para el registro de votaciones
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.
11. DISEÑO DE UNA APLICACIÓN PARA GESTIONAR UN CENTRO DE MASCOTAS
Objetivo: Desarrollar un ejercicio para diseñar la aplicación ESCUELA DE MASCOTAS, como herramienta de apoyo para la gestión de una microempresa encargada del adiestramiento de perros domésticos.
Primer paso: Diseño de la portada de la aplicación
Diseñe una portada relacionada con la razón social de la empresa. Agregue imágenes alusivas al adestramiento de mascotas. Incluya un botón denominado CONTINUAR con un hipervínculo que dirija al usuario a una hoja de nombre FACTURAR.
Ilustración . Portada propuesta para el ejercicio 11
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.
.
Ilustración . Opción para visualizar las líneas de división y encabezados en Microsoft® Excel 2010
Proteja la hoja, desmarcando la opción SELECCIONAR CELDAS BLOQUEADAS, con el fin de evitar daños involuntarios en la portada.
Ilustración . Protección de la hoja portada para el ejercicio 11
Segundo paso: Diseño de la plantilla para la facturación
La aplicación contendrá 4 hojas: PORTADA, FACTURAR, ENTRENAMIENTO y REGISTRO. Antes de pasar al diseño de las tres últimas hojas, procederemos a crear un menú en común que permita el desplazamiento entre hojas. Inicie insertando tres botones, agregando un hipervínculo respectivo para cada hoja.
Ilustración . Esquema general de la aplicación
Seleccione toda la hoja, y copie su contenido para luego pegarlo en las hojas restantes. Elimine 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.
En la hoja FACTURAR, diseñe una tabla que contenga los siguientes campos:
Nombre Mascota (máximo 20 caracteres)
Código
Actividades Realizadas
Fecha
Valor Actividad
Subtotal
IVA
Valor Total
Estado
Ilustración . Plantilla de facturación para el ejercicio 11
Selecciones las celdas de contenido de los campos (puede ayudarse con la tecla CONTROL para seleccionar celdas no consecutivas) y pulsando con el botón derecho del mouse sobre ellas, desmarque la opción BLOQUEADA que se encuentra en FORMATO DE CELDAS ficha PROTEGER.
Ilustración . Bloqueo y desbloqueo de celdas
Agregue las fórmulas necesarias para calcular el SUBTOTAL, IVA (equivalente al 16% del SUBTOTAL) y VALOR TOTAL. En el valor del campo ESTADO, escriba SIN CANCELAR.
Ilustración . Fórmulas para los campos Subtotal, IVA y Valor Total.
Tercer paso: Diseño del formulario de Facturación
Diseñe un formulario que contenga los campos descritos en el paso anterior como se puede observar en la siguiente ilustración.
Ilustración . Formulario para el registro de facturas
Proteja los TEXTBOX correspondientes a NOMBRE MASCOTA, ACTIVIDADES REALIZADAS, FECHA y VALOR, modificando la opción ENABLED a FALSE. Haga doble click en el botón ACEPTAR y escriba el siguiente código. La función de este botón es trasladar los datos del USERFORM1 a la hoja de cálculo.
Private Sub CommandButton2_Click()
Cells(3, 6).Value = TextBox1.Text
Cells(3, 12).Value = TextBox2.Text
Cells(6, 5).Value = TextBox3.Text
Cells(6, 8).Value = TextBox4.Text
Cells(6, 9).Value = TextBox5.Text
Cells(7, 5).Value = TextBox6.Text
Cells(7, 8).Value = TextBox7.Text
Cells(7, 9).Value = TextBox8.Text
Cells(8, 5).Value = TextBox9.Text
Cells(8, 8).Value = TextBox10.Text
Cells(8, 9).Value = TextBox11.Text
Cells(9, 5).Value = TextBox12.Text
Cells(9, 8).Value = TextBox13.Text
Cells(9, 9).Value = TextBox14.Text
Cells(14, 9).Value = Label6.Caption
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox9.Text = ""
TextBox10.Text = ""
TextBox11.Text = ""
TextBox12.Text = ""
TextBox13.Text = ""
TextBox14.Text = ""
Label6.Caption ="SIN CANCELAR"
End Sub
Nótese que se traslada el valor del CAPTION del componente LABEL6. Más adelante se incluirá el código del botón BUSCAR. Bloquearemos momentáneamente el botón ACEPTAR en el momento que se active la ventana. Para cumplir con esta tarea deberá hacer doble click en la ventana (USERFORM1), seleccionando el PROCEDIMIENTO ACTIVATE e ingresando el siguiente código.
Private Sub UserForm_Activate()
CommandButton2.Enabled = False
End Sub
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 FACTURAR (ver ilustración) y escriba el siguiente código.
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Ilustración . Botón para activar el formulario de registro de facturas
Proteja la hoja desde la ficha REVISAR, desmarcando la opción SELECCIONAR CELDAS BLOQUEADAS.
Ilustración . Protección de la hoja facturar para el ejercicio 11
Quinto paso: Plantilla y formularios para el registro de entrenamientos
Diseñe una tabla en la hoja ENTRENAMIENTO que contenga los siguientes campos:
Código
Nombre Mascota (máximo 20 caracteres)
Actividades 1
Fecha 1
Actividades 2
Fecha 2
Actividades 3
Fecha 3
Actividades 4
Fecha 5
Ilustración . Diseño de la tabla para el registro de actividades por mascota
Diríjase a la consola de Visual Basic y diseñe el siguiente formulario (USERFORM2).
Ilustración . Formulario para el registro de entrenamientos
En esta ventana se incluyeron 4 COMBOBOX para identificar las actividades. La programación de esto elementos se realizará al final del documento. Proteja el TEXTBOX correspondiente a NOMBRE MASCOTA modificando la opción ENABLED a FALSE. Haga doble click en el botón ACTUALIZAR y escriba el siguiente código. La función de este botón es trasladar o actualizar unos datos existentes del USERFORM2 a la hoja de cálculo.
Private Sub CommandButton3_Click()
ESCRITO = "NO"
If TextBox2.Text <> "" And TextBox1.Text <> "" And TextBox3 <> "" Then
ESCRITO = "SI"
Else
MsgBox ("DEBE DE ESCRIBIR POR LO MENOS UNA ACTIVIDAD")
End If
ENCONTRADO = "NO"
For I = 1 To 100
If TextBox2.Text = Cells(I + 2, 5).Value Then
ENCONTRADO = "SI"
Exit For
End If
Next
If ENCONTRADO = "NO" And ESCRITO = "SI" Then
For I = 1 To 100
If Cells(I + 2, 5).Value = "" Then
Cells(I + 2, 5).Value = TextBox2.Text
Cells(I + 2, 6).Value = TextBox1.Text
Cells(I + 2, 7).Value = ComboBox1.Text
Cells(I + 2, 8).Value = TextBox3.Text
Cells(I + 2, 9).Value = ComboBox2.Text
Cells(I + 2, 10).Value = TextBox4.Text
Cells(I + 2, 11).Value = ComboBox3.Text
Cells(I + 2, 12).Value = TextBox5.Text
Cells(I + 2, 13).Value = ComboBox4.Text
Cells(I + 2, 14).Value = TextBox6.Text
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
ComboBox1.Text = ""
ComboBox2.Text = ""
ComboBox3.Text = ""
ComboBox4.Text = ""
Exit For
End If
Next
End If
If ENCONTRADO = "SI" And ESCRITO = "SI" Then
For I = 1 To 100
If TextBox2.Text = Cells(I + 2, 5).Value Then
Cells(I + 2, 5).Value = TextBox2.Text
Cells(I + 2, 6).Value = TextBox1.Text
Cells(I + 2, 7).Value = ComboBox1.Text
Cells(I + 2, 8).Value = TextBox3.Text
Cells(I + 2, 9).Value = ComboBox2.Text
Cells(I + 2, 10).Value = TextBox4.Text
Cells(I + 2, 11).Value = ComboBox3.Text
Cells(I + 2, 12).Value = TextBox5.Text
Cells(I + 2, 13).Value = ComboBox4.Text
Cells(I + 2, 14).Value = TextBox6.Text
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
ComboBox1.Text = ""
ComboBox2.Text = ""
ComboBox3.Text = ""
ComboBox4.Text = ""
Exit For
End If
Next
End If
End Sub
Observe que en el código se declaran dos variables: ESCRITO y ENCONTRADO. La primera cambia su valor a SI siempre y cuando, exista un texto escrito en los TEXTBOX 1, 2 y 3. Esto evita que el usuario realice una modificación en la tabla sin haber escrito nada en el USERFORM. La segunda variable torna su valor SI en el momento en que se encuentre una coincidencia entre el campo CÓDIGO (TEXTBOX2) del USERFORM2 y la celda de la tabla correspondiente a dicho CÓDIGO. La rutina continúa con dos condicionales:
IF ENCONTRADO = "NO" AND ESCRITO = "SI" THEN ->> En caso de que los valores de las variables ENCONTRADO y ESCRITO sean NO y SI respectivamente, se procederá a agregar un nuevo registro.
IF ENCONTRADO = "SI" AND ESCRITO = "SI" THEN ->> En caso de que ambos valores de las variables sean SI, se procederá a actualizar un registro existente.
Antes de pasar a programar el botón BORRAR, adicionaremos un nuevo USERFORM (USERFOM3) para validar la eliminación de un registro con una CONTRASEÑA. Diseñe el formulario de acuerdo a la siguiente ilustración. Modifique las propiedades MAXLENGTH y PASSWORDCHAR del TEXTBOX1 en 4 y * respectivamente.
Ilustración . Propiedades MaxLength y PasswordChar del control TextBox
Regrese al formulario anterior (USERFORM2) y haga doble click en el botón BORRAR, agregando el siguiente código
Private Sub CommandButton2_Click()
UserForm3.Show
End Sub
Bloquearemos momentáneamente el botón BORRAR y ACTUALIZAR en el momento que se active la ventana. Para cumplir con esta tarea deberá hacer doble click en la ventana (USERFORM2), seleccionando el PROCEDIMIENTO ACTIVATE e ingresando el siguiente código.
Private Sub UserForm_Activate()
CommandButton2.Enabled = False
CommandButton3.Enabled = False
End Sub
Visualice el USERFORM3, y programe el código para el botón BORRAR.
Private Sub CommandButton1_Click()
If TextBox1 <> "1234" Then
MsgBox ("LA CONTRASEÑA NO ES CORRECTA")
Else
For I = 1 To 100
If UserForm2.TextBox2.Text = Cells(I + 2, 5).Value Then
Range(Cells(I + 2, 5), Cells(I + 2, 14)).Select
Selection.ClearContents
Range(Cells(I + 3, 5), Cells(102, 14)).Select
Selection.Cut
Cells(I + 2, 5).Select
ActiveSheet.Paste
Exit For
End If
Next
End If
End Sub
Inserte un botón en la hoja (ENTRENAMIENTO) denominado REGISTRAR y escriba el siguiente código en él.
Private Sub CommandButton1_Click()
UserForm2.Show
End Sub
No se le olvide desbloquear las celdas correspondientes a los registros de la tabla (seleccione un todas las filas de la tabla para desbloquearlas, en caso contrario el programa producirá un error) y proteger la hoja desmarcando la opción SELECCIONAR CELDAS BLOQUEADAS. El resultado final debería verse como en la siguiente ilustración.
Ilustración . Botón para activar el formulario de registro de entrenamientos
Sexto paso: Plantilla y formularios para el registro de mascotas y actividades de entrenamiento
Diseñe dos tablas en la hoja REGISTRO correspondientes al registro de mascotas y actividades de entrenamiento. Incluya los siguientes campos como puede observarse en la siguiente ilustración:
Código
Nombre Mascota (máximo 20 caracteres)
Estado
Actividad (se aceptan máximo 4 actividades de máximo 10 caracteres)
Valor
Ilustración . Diseño de la tabla para el registro de mascotas
Diseñe y programe el formulario (USERFORM4) para la primera tabla.
Ilustración . Formulario para el registro de mascotas
Registre el siguiente código en el botón INGRESAR.
Private Sub CommandButton2_Click()
REGISTRADO = "NO"
For I = 1 To 100
If TextBox2.Text = Cells(I + 2, 5).Value Then
MsgBox ("LA MASCOTA YA ESTA REGISTRADA")
REGISTRADO = "SI"
Exit For
End If
Next
If REGISTRADO = "NO" Then
For I = 1 To 100
If Cells(I + 2, 5).Value = "" Then
Cells(I + 2, 5).Value = TextBox2.Text
Cells(I + 2, 6).Value = TextBox1.Text
Cells(I + 2, 7).Value = "SIN CANCELAR"
TextBox1.Text = ""
TextBox2.Text = ""
Exit For
End If
Next
End If
End Sub
Registre el código en el botón BORRAR.
Private Sub CommandButton2_Click()
For I = 1 To 100
If TextBox2.Text = Cells(I + 2, 5).Value Then
Range(Cells(I + 2, 5), Cells(I + 2, 7)).Select
Selection.ClearContents
Range(Cells(I + 3, 5), Cells(102, 7)).Select
Selection.Cut
Cells(I + 2, 5).Select
ActiveSheet.Paste
Exit For
End If
Next
End Sub
Diseñe y programe el formulario (USERFORM5) para el registro de las actividades de entrenamiento.
Ilustración . Formulario para el registro de actividades
Ingrese el código en botón REGISTRAR.
Private Sub CommandButton2_Click()
REGISTRADO = "NO"
For I = 1 To 4
If Cells(I + 2, 9).Value = TextBox1.Text Then
REGISTRADO = "SI"
Cells(I + 2, 9).Value = TextBox1.Text
Cells(I + 2, 10).Value = TextBox2.Text
TextBox1.Text =””
TextBox2.Text =””
Exit For
End If
Next
If REGISTRADO = "NO" Then
For I = 1 To 4
If Cells(I + 2, 9).Value = "" Then
REGISTRADO = "SI"
Cells(I + 2, 9).Value = TextBox1.Text
Cells(I + 2, 10).Value = TextBox2.Text
TextBox1.Text =””
TextBox2.Text =””
Exit For
End If
Next
End If
End Sub
La rutina anterior permite ingresar o actualizar el registro de una actividad, gracias a la variable REGISTRADO. Agregue dos botones en la hoja REGISTRO llamados REG. MASCOTA y REG. ACTIVIDAD con los siguientes códigos respectivos:
Private Sub CommandButton1_Click()
UserForm4.Show
End Sub
Private Sub CommandButton1_Click()
UserForm5.Show
End Sub
Desbloqueé las celdas correspondientes a los registros de ambas tablas (seleccione un todas las filas de las tablas para desbloquearlas, en caso contrario el programa producirá un error) y proteja la hoja desde la ficha REVISAR, desmarcando la opción SELECCIONAR CELDAS BLOQUEADAS.
Ilustración . Protección de la hoja registro para el ejercicio 11
Elimine 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 (esto debe realizarlo a todas las hojas del libro).
Ilustración . Opción para visualizar las líneas de división y encabezados en Microsoft® Excel 2010
Séptimo paso: Programación de los COMBOBOX del formulario USERFOM2 (REGISTRO DE ENTRENAMIENTOS)
Haga doble click en la ventana (USERFORM2), seleccionando el PROCEDIMIENTO ACTIVATE y adicione el siguiente código (se encuentra en color azul).
Private Sub UserForm_Activate()
CommandButton2.Enabled = False
CommandButton3.Enabled = False
ComboBox1.Clear
ComboBox1.AddItem (Sheets("REGISTRO").Cells(3, 9).Value)
ComboBox1.AddItem (Sheets("REGISTRO").Cells(4, 9).Value)
ComboBox1.AddItem (Sheets("REGISTRO").Cells(5, 9).Value)
ComboBox1.AddItem (Sheets("REGISTRO").Cells(6, 9).Value)
ComboBox2.Clear
ComboBox2.AddItem (Sheets("REGISTRO").Cells(3, 9).Value)
ComboBox2.AddItem (Sheets("REGISTRO").Cells(4, 9).Value)
ComboBox2.AddItem (Sheets("REGISTRO").Cells(5, 9).Value)
ComboBox2.AddItem (Sheets("REGISTRO").Cells(6, 9).Value)
ComboBox3.Clear
ComboBox3.AddItem (Sheets("REGISTRO").Cells(3, 9).Value)
ComboBox3.AddItem (Sheets("REGISTRO").Cells(4, 9).Value)
ComboBox3.AddItem (Sheets("REGISTRO").Cells(5, 9).Value)
ComboBox3.AddItem (Sheets("REGISTRO").Cells(6, 9).Value)
ComboBox4.Clear
ComboBox4.AddItem (Sheets("REGISTRO").Cells(3, 9).Value)
ComboBox4.AddItem (Sheets("REGISTRO").Cells(4, 9).Value)
ComboBox4.AddItem (Sheets("REGISTRO").Cells(5, 9).Value)
ComboBox4.AddItem (Sheets("REGISTRO").Cells(6, 9).Value)
End Sub
Con esta rutina incluiremos las actividades de entrenamiento en la hoja REGISTRO en cada COMBOBOX, facilitando su selección por parte del usuario. Realice una prueba del formulario.
Octavo paso: Programación de los botones denominados BUSCAR
Para finalizar, se programarán los botones BUSCAR de los USERFORM 1 y 2. Haga doble click en el botón BUSCAR del primer USERFORM e incluya el código:
Private Sub CommandButton1_Click()
ACIERTO = "NO"
For I = 1 To 100
If TextBox2.Text = Sheets("REGISTRO").Cells(I + 2, 5).Value And TextBox2.Text <> "" Then
ACIERTO = "SI"
TextBox1.Text = Sheets("REGISTRO").Cells(I + 2, 6).Value
Label6.Caption = Sheets("REGISTRO").Cells(I + 2, 7).Value
CommandButton2.Enabled = True
Exit For
End If
Next
If ACIERTO = "NO" Then
MsgBox ("LA MASCOTA NO SE ENCUENTRA REGISTRADA")
End If
If ACIERTO = "SI" Then
For I = 1 To 100
If TextBox2.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 5).Value Then
TextBox3.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 7).Value
TextBox4.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 8).Value
TextBox6.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 9).Value
TextBox7.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 10).Value
TextBox9.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 11).Value
TextBox10.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 12).Value
TextBox12.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 13).Value
TextBox13.Text = Sheets("ENTRENAMIENTO").Cells(I + 2, 14).Value
For J = 1 To 4
If TextBox3.Text = Sheets("REGISTRO").Cells(J + 2, 9) Then
TextBox5.Text = Sheets("REGISTRO").Cells(J + 2, 10)
End If
If TextBox6.Text = Sheets("REGISTRO").Cells(J + 2, 9) Then
TextBox8.Text = Sheets("REGISTRO").Cells(J + 2, 10)
End If
If TextBox9.Text = Sheets("REGISTRO").Cells(J + 2, 9) Then
TextBox11.Text = Sheets("REGISTRO").Cells(J + 2, 10)
End If
If TextBox12.Text = Sheets("REGISTRO").Cells(J + 2, 9) Then
TextBox14.Text = Sheets("REGISTRO").Cells(J + 2, 10)
End If
Next
Exit For
End If
Next
End If
End Sub
Si se encuentra la MASCOTA registrada, la variable ACIERTO cambiará su valor a SI. El fragmento de código siguiente (se ejecuta cuando la variable ACIERTO es SI) muestra el traslado de los datos de la hoja ENTRENAMIENTO a los TEXTBOX respectivos para las ACTIVIDADES REALIZADAS y FECHA. El código continúa verificando el valor de las actividades.
Pulse doble click en el botón BUSCAR del USERFORM2 ingresando el siguiente código.
Private Sub CommandButton1_Click()
ACIERTO = "NO"
For I = 1 To 100
If TextBox2.Text = Sheets("REGISTRO").Cells(I + 2, 5).Value And TextBox2.Text <> "" Then
TextBox1.Text = Sheets("REGISTRO").Cells(I + 2, 6).Value
CommandButton2.Enabled = True
CommandButton3.Enabled = True
ACIERTO = "SI"
Exit For
End If
Next
If ACIERTO = "NO" Then
MsgBox ("LA MASCOTA NO SE ENCUENTRA REGISTRADA")
End If
End Sub
Observe que una vez encontrado el registro de la mascota (ACIERTO = “SI”), se activan los botones BORRAR y ACTUALIZAR.
Para terminar con la programación general de la aplicación, vamos agregar un fragmento de código que actualice el estado de la mascota de SIN CANCELAR a CANCELADO. Agregue un botón a la hoja FACTURAR denominado CANCELAR e ingrese el siguiente código.
Private Sub CommandButton2_Click()
If Cells(14, 9).Value = "SIN CANCELAR" And Cells(3, 12).Value <> "" Then
Cells(14, 9).Value = "CANCELADO"
For I = 1 To 100
If Sheets("REGISTRO").Cells(I + 2, 5).Value = Cells(3, 12).Value Then
Sheets("REGISTRO").Cells(I + 2, 7).Value = "CANCELADO"
Range("E6:I9").Select
Selection.ClearContents
Exit For
End If
Next
Else
MsgBox ("LA FACTURA SE ENCUENTRA CANCELADA")
End If
End Sub
Ilustración . Diseño final de la hoja facturar para el ejercicio 11
Noveno paso: Prueba Básica de la aplicación
1.Ingrese las siguientes actividades en la hoja REGISTRO (los precios regístrelos sin signos y puntuaciones)
Básica 1 -> $65.000
Básica 2 -> $75.000
Avanzado 1 -> $150.000
Avanzado 2 -> $120.000
2.Modifique el precio de la actividad Básica 2 a $70.000
3.Ingrese la siguientes mascotas con sus respectivos códigos
Homero -> 4321
Doggy -> 5552
Pulgoso -> 3950
Pastor -> 2001
4.Borre la mascota de código 5552 (el resultado preliminar de la hoja debería quedar como se muestra en la siguiente ilustración).
Ilustración . Prueba de la aplicación para gestionar un centro de mascotas
5.Registre los siguientes entrenamientos para las mascotas (en la hoja ENTRENAMIENTO):
Pulgoso -> 3950
Actividad Básica 1 (10-May-10) Avanzado 1 (15-Jun-10)
Pastor -> 2001
Actividad Básica 1 (10-May-10) Básica 2 (19-May-10)
Avanzado 1 (15-Jun-10)
6.En la hoja FACTURAR pulse el botón del mismo nombre y busque el código 2001. Luego pulse el botón ACEPTAR.
Ilustración . Registro de una factura
Verifique el valor total ($ 324.800).
7.Ahora pulse sobre el botón CANCELAR de la hoja y verifique que el estado de la cuenta pase a CANCELADO.
12. DISEÑO DE UNA APLICACIÓN PARA LA GESTIÓN DE INFORMACIÓN DOCUMENTAL
Objetivo: Desarrollo de una aplicación completa para el registro y control de documentos, empleando un lector de código de barras.
Primer paso: Diseño de la portada
Cambie el nombre de la hoja 1 a PORTADA y agregue un color oscuro (en este ejemplo se utilizó azul oscuro) como fondo de la hoja. Incluya el siguiente texto: “GESTOR D: Software para la Gestión Documental” (puede utilizar la herramienta WordArt® disponible en Microsoft® Excel).
Ilustración . Encabezado de la hoja portada para el ejercicio 12
Adicione tres botones (tipo CONTROLES ACTIVE X). Modifique la propiedad CAPTION de cada botón a INGRESAR, ADMINISTRADOR y GUARDAR/SALIR, respectivamente. Cambie el tamaño de la letra de los botones con la opción FONT.
Ilustración . Botones de comando (tipo Active X) dispuestos en la hoja portada
Segundo paso: Ventana de ingreso a la aplicación
En la interfaz de Microsoft® Visual Basic para Aplicaciones, inserte un formulario que incluya los siguientes campos:
Usuario (este campo admite los valores secretaria, auditor y administrador)
Clave (máximo 5 caracteres)
Diseñe el formulario empleando un control de CUADRO COMBINADO, un CUADRO DE TEXTO, un BOTÓN DE COMANDO y dos ETIQUETAS. Modifique las propiedades FONT, BACKCOLOR, CAPTION y FORECOLOR para resaltar la ventana. Para el CUADRO DE TEXTO cambie las propiedades MAXLENGTH a 5 y PASSWORDCHAR a * (asterisco).
Ilustración . Propiedades MaxLength y PasswordChar del control TextBox
El resultado final del formulario podría verse como se muestra en la siguiente ilustración.
Ilustración . Formulario de acceso para la aplicación
Finalice este paso con la programación de los botones INGRESAR y ADMINISTRADOR que se encuentran en la hoja PORTADA, provocando el despliegue de la ventana recién creada (USERFORM1). El botón INGRESAR afectará el CUADRO COMBINADO del USERFORM1 permitiendo mostrar las opciones SECRETARIA, AUDITOR y ADMINISTRADOR en el CUADRO COMBINADO.
Private Sub CommandButton1_Click()
UserForm1.ComboBox1.Enabled = True
UserForm1.ComboBox1.Clear
UserForm1.ComboBox1.AddItem (“SECRETARIA”)
UserForm1.ComboBox1.AddItem (“AUDITOR”)
UserForm1.ComboBox1.AddItem (“ADMINISTRADOR”)
UserForm1.Show
End Sub
Por otro lado, el botón ADMINISTRADOR solo mostrará la opción ADMINISTRADOR en el CUADRO COMBINADO como activa, impidiendo su modificación por parte del usuario.
Private Sub CommandButton2_Click()
UserForm1.ComboBox1.Clear
UserForm1.ComboBox1.Text = “ADMINISTRADOR”
UserForm1.ComboBox1.Enabled = False
UserForm1.Show
End Sub
Realice una prueba del formulario examinando el funcionamiento preliminar de los controles dispuestos en él.
Tercer paso: Programación del botón GUARDAR/SALIR
Este botón cumplirá dos acciones: guardar el documento y salir de la aplicación. Haga doble click sobre el botón GUARDAR/SALIR e ingrese el siguiente código:
Private Sub CommandButton3_Click()
ThisWorkbook.Save
ThisWorkbook.Close
End Sub
El comando SAVE guarda los cambios realizados en el libro actual (THISWORKBOOK), mientras que el comando CLOSE cierra el libro sin salir de MS® EXCEL.
Cuarto paso: Finalización del diseño de la hoja PORTADA
Finalice la PORTADA desactivando la opción TÍTULOS del menú VISTA y protegiendo la hoja evitando SELECCIONAR LAS CELDAS BLOQUEADAS. Asegúrese de que la PORTADA sea la primera hoja que mostrará la aplicación cuando se le dé inicio. Para ello diríjase a la interfaz de VISUAL BASIC PARA APLICACIONES y haga doble click en THISWORKBOOK. Modifique el objeto a WORKBOOK, asegurándose de seleccionar el procedimiento OPEN y copie el siguiente código:
Private Sub Workbook_Open()
Sheets(“PORTADA”).Select
End Sub
Quinto paso: Programación del INGRESO de usuario a la aplicación
Cree dos hojas denominadas INICIO y CONTROL. En la hoja CONTROL diseñe una pequeña tabla con los siguientes capos:
Usuario
Clave
Asigne una clave de 5 dígitos a cada uno de los tipos de usuarios disponibles (SECRETARIA, AUDITOR y ADMINISTRADOR).
Ilustración . Usuarios y contraseñas de ejemplo para el ejercicio 12
En la hoja INICIO coloque cuatro botones (CONTROLES ACTIVE X) denominados REGISTRO, CONSULTA, AUDITORÍA y CAMBIO DE CLAVES, como puede observar en la siguiente ilustración.
Ilustración . Botones de menú dispuestos en la hoja inicio
Pulse dos veces sobre el botón INGRESAR del USERFORM1 e incluya el siguiente código preliminar:
Private Sub CommandButton1_Click()
If ComboBox1.Text = Sheets(“CONTROL”).Cells(4, 2).Value Then
If TextBox1.Text = Sheets(“CONTROL”).Cells(4, 3).Value Then
Sheets(“INICIO”).CommandButton1.Enabled = True
Sheets(“INICIO”).CommandButton2.Enabled = True
Sheets(“INICIO”).CommandButton3.Enabled = False
Sheets(“INICIO”).CommandButton4.Enabled = False
Sheets(“INICIO”).Select
Else
MsgBox (“La clave es incorrecta”)
End If
End If
If ComboBox1.Text = Sheets(“CONTROL”).Cells(5, 2).Value Then
If TextBox1.Text = Sheets(“CONTROL”).Cells(5, 3).Value Then
Sheets(“INICIO”).CommandButton1.Enabled = False
Sheets(“INICIO”).CommandButton2.Enabled = False
Sheets(“INICIO”).CommandButton3.Enabled = True
Sheets(“INICIO”).CommandButton4.Enabled = False
Sheets(“INICIO”).Select
Else
MsgBox (“La clave es incorrecta”)
End If
End If
If ComboBox1.Text = Sheets(“CONTROL”).Cells(6, 2).Value Then
If TextBox1.Text = Sheets(“CONTROL”).Cells(6, 3).Value Then
Sheets(“INICIO”).CommandButton1.Enabled = True
Sheets(“INICIO”).CommandButton2.Enabled = True
Sheets(“INICIO”).CommandButton3.Enabled = True
Sheets(“INICIO”).CommandButton4.Enabled = True
Sheets(“INICIO”).Select
Else
MsgBox (“La clave es incorrecta”)
End If
End If
UserForm1.Hide
End Sub
Este código permitirá comparar si la clave digitada de acuerdo al usuario es correcta; en caso tal, se procederá a activar o desactivar los botones dispuestos en la hoja INICIO de acuerdo a un nivel de seguridad por usuario.
SECRETARIA: Solo dispondrá del REGISTRO y CONSULTA de documentos.
AUDITOR: Solo dispondrá de la opción AUDITORÍA.
ADMINISTRADOR: Tiene todas las opciones disponibles. El ADMINISTRADOR será el único autorizado para el cambio de claves..
Edite el procedimiento ACTIVATE del USERFORM1 para borrar el contenido del control TEXTBOX1.
Private Sub UserForm_Activate()
TextBox1.Text = “”
End Sub
Para finalizar desbloquee las celdas correspondientes a las claves de los usuarios en la hoja CONTROL y proceda a proteger la hoja (no se le olvide desactivar la opción TÍTULO en el menú VISTA).
Sexto paso: Registro de documentos
En la hoja INICIO incluya los siguientes campos en una tabla para 500 registros:
CÓDIGO (se manejará el código de barra tipo CODE 39 con un máximo de 13 dígitos)
FECHA
ORIGEN
DESTINO
DE:
PARA:
Ilustración . Tabla para el registro de documentos
Inserte un nuevo formulario (USERFORM2) que incluya los campos anteriores. En este caso se adicionaron tres botones denominados HOY, REGISTRAR y CANCELAR. Los campos ORIGEN, DESTINO, DE: y PARA: se relacionarán con controles tipo CUADROS COMBINADO, mientras que el CÓDIGO y la FECHA con CUADROS DE TEXTO.
Ilustración . Formulario para el registro de documentos
Modifique la opción MAXLENGTH a 13 y TABINDEX a 0 (cero) del TEXTBOX1. La propiedad TABINDEX permite especificar el orden de ubicación de un objeto al pulsar la tecla TAB. Al configurar el TEXTBOX1 con un TABINDEX igual a 0 (cero), se obliga a posicionar el cursor en el control al momento de mostrar la ventana.
Cambie la propiedad ENABLED del TEXTBOX2, los COMBOBOX, el botón HOY y el botón REGISTRAR a FALSE. Estos controles se deberán activar solo si el código cumple con los 13 dígitos de longitud y éste no se encuentra aún registrado en la aplicación.
Al presionar el botón HOY se mostrará en el TEXTBOX (TEXTBOX2) correspondiente al campo FECHA, la fecha actual del sistema con el comando DATE.
Private Sub CommandButton1_Click()
TextBox2.Text = Date
End Sub
Para verificar si el código es correcto, deberá hacer doble click sobre el primer TEXTBOX (TEXTBOX1) e incluir la siguiente rutina.
Private Sub TextBox1_Change()
Encontrado = "NO"
If TextBox1.TextLength = 13 Then
For I = 1 To 100
If TextBox1.Text = Cells(I + 2, 7).Value Then
Encontrado = "SI"
Exit For
End If
Next
End If
If TextBox1.TextLength = 13 Then
If Encontrado = "NO" Then
TextBox2.Enabled = True
CommandButton1.Enabled = True
ComboBox1.Enabled = True
ComboBox2.Enabled = True
ComboBox3.Enabled = True
ComboBox4.Enabled = True
CommandButton2.Enabled = True
Else
TextBox2.Enabled = False
CommandButton1.Enabled = False
ComboBox1.Enabled = False
ComboBox2.Enabled = False
ComboBox3.Enabled = False
ComboBox4.Enabled = False
CommandButton2.Enabled = False
End If
End If
End Sub
La programación de este control comienza con la inicialización de la variable ENCONTRADO en NO, valor que cambia a SI en caso de que el código digitado en el TEXTBOX1 coincida con un código anteriormente registrado. Para poder ejecutar el ciclo PARA y dar inicio a la búsqueda del código, se evalúa que el contenido de caracteres del TEXTBOX1 sea igual a 13 gracias a la propiedad TEXTLENGTH.
Si el código es encontrado los controles se mantendrán con la propiedad ENABLED en FALSE, en caso contrario, se activarán los controles correspondientes a la información de registro de un nuevo documento. Continúe el ejercicio ingresando el código para el botón REGISTRAR (COMMANDBUTTON2) y CANCELAR (COMMANDBUTTON3).
Private Sub CommandButton2_Click()
For I = 1 To 100
If Cells(I + 2, 7).Value = "" Then
Cells(I + 2, 7).Value = Str(TextBox1.Text)
Cells(I + 2, 8).Value = TextBox2.Text
Cells(I + 2, 9).Value = ComboBox1.Text
Cells(I + 2, 10).Value = ComboBox2.Text
Cells(I + 2, 11).Value = ComboBox3.Text
Cells(I + 2, 13).Value = ComboBox4.Text
UserForm2.Hide
Exit For
End If
Next
End Sub
Private Sub CommandButton3_Click()
UserForm2.Hide
End Sub
Programe el botón REGISTRO de la hoja INICIO para poder desplegar el USERFORM2.
Private Sub CommandButton1_Click()
UserForm2.Show
End Sub
Séptimo paso: Programación de los COMBOBOX del USERFORM2
Se cuenta con un listado de dependencias de origen y destino, al igual que un listado del personal que labora en la empresa. Para incluir lo en los COMBOBOX respectivos del USERFORM2, inserte una nueva hoja llamada AUDITORÍA con el contenido que se muestra en la siguiente ilustración.
Ilustración . Registro de dependencias y personal
Haga doble click sobre el USERFORM2, seleccione el procedimiento ACTIVATE e ingrese la siguiente rutina.
Private Sub UserForm_Activate()
TextBox1.Text = ""
TextBox2.Text = ""
ComboBox1.Clear
ComboBox2.Clear
For I = 1 To 11
ComboBox1.AddItem (Sheets("AUDITORIA").Cells(2 + I, 2).Value)
ComboBox2.AddItem (Sheets("AUDITORIA").Cells(2 + I, 2).Value)
Next
ComboBox3.Clear
ComboBox4.Clear
For I = 1 To 11
ComboBox3.AddItem (Sheets("AUDITORIA").Cells(2 + I, 6).Value)
ComboBox4.AddItem (Sheets("AUDITORIA").Cells(2 + I, 6).Value)
Next
End Sub
Realice una prueba del formulario completo.
Octavo paso: Búsqueda de documentos
Cree un nuevo USERFORM (con la propiedad CAPTION igual a BUSQUEDA) e incluya los siguientes controles:
Ilustración . Formulario de búsqueda de documentos
Modifique la propiedad TABINDEX del TEXTBOX1 a 0. Deshabilite los TEXTBOX del 2 al 6 (correspondientes a los campos FECHA, ORIGEN, DESTINO, DE y PARA). Pulse dos veces sobre el TEXTBOX1 e inserte en la siguiente rutina:
Private Sub TextBox1_Change()
Encontrado = "NO"
For I = 1 To 100
If Cells(2 + I, 7).Value = TextBox1.Text Then
TextBox2.Text = Cells(2 + I, 8).Value
TextBox3.Text = Cells(2 + I, 9).Value
TextBox4.Text = Cells(2 + I, 10).Value
TextBox5.Text = Cells(2 + I, 11).Value
TextBox6.Text = Cells(2 + I, 13).Value
Encontrado = “SI”
Exit For
End If
Next
If (TextBox1.TextLength = 13) And (Encontrado = "NO") Then
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox1.SelStart = 0
TextBox1.SelLength = 13
End If
End Sub
El comando SELSTART permite ubicar el cursor en un punto determinado del texto, mientras que el comando SELLENGTH selecciona el texto de acuerdo a una longitud programada (en este caso igual a 13), partiendo de la posición actual del curso. Esta rutina permitirá agilizar la búsqueda de los documentos. Programe el botón CANCELAR del USERFORM para ocultar la ventana.
Private Sub CommandButton1_Click()
UserForm3.Hide
End Sub
Haga doble click sobre el USERFORM3 y en el procedimiento ACTIVATE incluya:
Private Sub UserForm_Activate()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
End Sub
Para finalizar este paso, programe el botón CONSULTA de la hoja INICIO para poder mostrar el USERFORM3.
Private Sub CommandButton2_Click()
UserForm3.Show
End Sub
Noveno paso: Auditoría de documentos
El procedimiento para la auditoría consiste en mantener un contador de las veces que se han enviado o recibido documentos. Para cumplir con esta tarea, adicione la fórmula CONTAR.SI en la hoja AUDITORIA por cada dependencia o personal. En el parámetro RANGO seleccione las celdas correspondientes a los registros que están en la hoja INICIO, por ejemplo, el RANGO para las ENTRADAS para las dependencias se relaciona con las celdas del campo ORIGEN (fijé las celdas con F4) y las SALIDAS con la columna DESTINO. Para el personal el RANGO para las ENTRADAS equivale a la columna DE y las salidas con el campo PARA.
Ilustración . Uso de la función Contar.Si en la hoja auditoría
El CRITERIO equivale al nombre de la dependencia (o del personal).
Ilustración . Uso de la función Contar.Si
Incluya una tabla y gráfica que muestren el total de ENTRADAS y SALIDAS de documentos de las dependencias (si aún no tiene datos registrados, no se mostrará la gráfica).
Ilustración . Tabla y gráfico resumen de documentos
Incluya la siguiente línea de código para el botón AUDITORÍA de la hoja INICIO.
Private Sub CommandButton3_Click()
Sheets("AUDITORIA").Select
End Sub
En la hoja AUDITORIA inserte un botón llamado REGRESAR, con la programación correspondiente que permita regresar a la hoja INICIO.
Private Sub CommandButton1_Click()
Sheets("INICIO").Select
End Sub
La imagen final de la hoja AUDITORIA se puede ver a continuación.
Ilustración . Diseño final de la hoja auditoría
Décimo paso: Programación del CAMBIO DE CLAVE
Para facilitar al ADMINISTRADOR el cambio de clave, diseñe el siguiente formulario.
Ilustración . Formulario para el cambio de clave
En el procedimiento ACTIVATE del USERFORM escriba la siguiente rutina:
Private Sub UserForm_Activate()
ComboBox1.Clear
ComboBox1.AddItem ("SECRETARIA")
ComboBox1.AddItem ("AUDITOR")
ComboBox1.AddItem ("ADMINISTRADOR")
TextBox1.Text = ""
TextBox2.Text = ""
CommandButton1.Enabled = False
TextBox1.Enabled = False
End Sub
Cambie el valor de la propiedad STYLE del COMBOBOX a 2-FMSTYLEDROPDOWNLIST. Esta alteración de la propiedad bloqueará el ingreso directo de texto en el control, limitando al ADMINISTRADOR, a seleccionar solo los usuarios anteriormente programados. Para mostrar la CLAVE ACTUAL, pulse dos veces sobre el COMBOBOX1 e ingrese las siguientes líneas de código:
Private Sub ComboBox1_Change()
If ComboBox1.Text = "SECRETARIA" Then
TextBox1.Text = Sheets("CONTROL").Cells(4, 3).Value
Else
If ComboBox1.Text = "AUDITOR" Then
TextBox1.Text = Sheets("CONTROL").Cells(5, 3).Value
Else
TextBox1.Text = Sheets("CONTROL").Cells(6, 3).Value
End If
End If
End Sub
Modifique la propiedad MAXLENGTH del TEXTBOX2 a 5. Haga doble click sobre éste control e incluya:
Private Sub TextBox2_Change()
If TextBox1.TextLength > 0 Then
CommandButton1.Enabled = True
End If
End Sub
Estas líneas de código permiten activar el botón MODIFICAR para realizar un cambio de clave. La programación del botón REGISTRO se muestra a continuación.
Private Sub CommandButton1_Click()
If ComboBox1.Text <> "" Then
If ComboBox1.Text = "SECRETARIA" Then
Sheets("CONTROL").Cells(4, 3).Value = TextBox2.Text
UserForm4.Hide
Else
If ComboBox1.Text = "AUDITOR" Then
Sheets("CONTROL").Cells(5, 3).Value = TextBox2.Text
UserForm4.Hide
Else
Sheets("CONTROL").Cells(6, 3).Value = TextBox2.Text
UserForm4.Hide
End If
End If
Else
MsgBox ("DEBE SELECCIONAR UN USUARIO")
End If
End Sub
Finalice el cambio de clave incluyendo la programación del botón CANCELAR del USERFORM4 (COMMANDBUTTON2) y del botón CAMBIO DE CLAVE de la hoja INICIO (COMMANDBUTTON4).
Private Sub CommandButton2_Click()
UserForm4.Hide
End Sub
Private Sub CommandButton4_Click()
UserForm4.Show
End Sub
Realice una prueba del formulario modificando la clave de la SECRETARIA por 55555.
Ilustración . Prueba del formulario para el cambio de clave
Undécimo paso: Protección de las hojas
Proteja completamente las hojas PORTADA y AUDITORIA, desactivando la opción SELECCIONAR CELDAS BLOQUEADAS. Oculte la hoja CONTROL.
Ilustración . Protección de la hoja auditoría
Desproteja las celdas de la tabla correspondiente al ingreso de los documentos, y proceda a proteger la hoja INICIO, desactivando las opciones de SELECCIONAR CELDAS BLOQUEADAS y DESBLOQUEADAS. Desmarque las casillas MOSTRAR FICHAS DE HOJAS y MOSTRAR BARRA DE DESPLAZAMIENTO VERTICAL de la ventana de OPCIONES DE EXCEL.
Ilustración . Desmarque de las casillas mostrar fichas de hojas y mostrar barra de desplazamiento vertical
Realice una prueba general de la aplicación empleando un lector de código de barras configurado para leer el formato CODE 39.
Ilustración . Ejemplo de un código de barras según el formato Code 39.
BIBLIOGRAFÍA
Carlberg, C. (1995). Administración de Datos con Excel. Mexico: Prentice Hall.
Drucker, P. (1988). The Coming of the New Organization. Harvard Business Review, 4-12.
Etheridge, D. (2007). Microsoft Office 2007 Data Analisys. Indianapolis: Wiley Publishing, Inc.
Etheridge, D. (2007). Microsoft Office Excel 2007 Programming. Indianapolis: Wiley Publishing, Inc.
Green, J., Bullen, S., Bovey, R., & Alexander, M. (2007). Excel 2007 VBA. Indianapolis: Wiley Publishing, Inc.
Serie Clic (Autor Corporativo). (2004). Excel avanzado: Funciones, tablas dinámicas y Solver. Bogotá: Editorial Medios Digitales.
Todo Excel (Autor Corporativo). (2008). Curso de macaros en VBA Excel. Bogotá: Todo Excel.
Vergara, J. C., & Quesada, I. (2007). Estadística Básica con Aplicaciones en Microsoft Excel. Madrid: Editorial Eumed - Universidad de Cartagena.
Walkenbach, J. (2007). Excel 2007 Power Programming with VBA. Indianapolis: John Wiley & Sons.
ÍNDICE
A
ACTIVATE, 74, 79, 84, 124, 130, 135, 146, 151, 153, 156
AJUSTAR TEXTO, 23, 33
ALEATORIO, 50, 52, 53
ALINEACIÓN DEL TEXTO A LA IZQUIERDA, 44
ALINEAR EN EL MEDIO, 23, 38, 54
ANCHO, 27
B
BACKCOLOR, 72, 109, 142
BINGO, 4, 50, 54, 56
BOTÓN DE COMANDO, 71, 73, 74, 75, 77, 142
BOTÓN DE OPCIÓN, 66, 67
BOTONES DE OPCIÓN, 44, 45, 66, 71, 73
C
CAPTION, 72, 73, 74, 124, 141, 142, 151
CASILLA DE VERIFICACIÓN, 45, 71, 73
Ch
CHEURÓN, 34, 35, 36
C
COMBINAR Y CENTRAR, 18, 24, 33, 57
COMBOBOX, 5, 7, 74, 127, 135, 136, 148, 150, 156
CONTAR.SI, 54, 69, 153
CONTRASEÑA, 129, 130
CONTROL, 6, 41, 43, 48, 59, 60, 62, 68, 74, 107, 122, 144, 145, 147, 156, 157, 158
CONTROLES DE FORMULARIO, 40
CRITERIO, 54, 154
CUADRO COMBINADO, 5, 41, 59, 62, 66, 71, 74, 142, 143
CUADRO DE GRUPO, 44, 45
CUADRO DE TEXTO, 35, 73, 142
D
DATOS, 5, 24, 25, 27, 28, 31, 46, 58, 78, 83
DIRECCIÓN DEL TEXTO, 35
E
ENTERO, 50
F
FONT, 72, 74, 141, 142
FOR, 82, 86, 105, 109
FORMA, 19
FORMAS, 34, 35
FORMATO CONDICIONAL, 52
FORMATO DE CELDAS, 31, 48, 55, 77, 122
FORMATO DE CONTROL, 41, 43, 60, 62
FORMATO DE FORMA, 35
FORMULARIO, 4, 33, 59, 74, 79
G
GIRAR TEXTO HACIA ARRIBA, 33
H
HIPERVÍNCULO, 21, 36, 37, 60
I
IF THEN ELSE, 77, 109
IMAGEN, 71, 73
IMPRIMIR, 106
INMOVILIZAR PANELES, 39
L
LÍMITE MENOR, 27
LÍMITE SUPERIOR, 27
LONGITUD DE TEXTO,, 47
M
MAXLENGTH, 73, 84, 96, 104, 109, 129, 142, 148, 157
MENSAJE DE ERROR, 47, 59
MICROSOFT® EXCEL, 8, 9, 11, 12, 15, 16, 18, 19, 20, 27, 28, 30, 31, 33, 39, 40, 48, 50, 57, 71, 78, 79, 80, 83, 85, 87, 92, 94, 100, 102, 103, 107, 119, 135, 141
MSGBOX, 110
N
NEGRILLA, 33
NUEVA REGLA, 52
O
OPEN, 144
P
PASSWORDCHAR, 129, 142
PENTÁGONO, 34
PERSONALIZAR BARRA DE HERRAMIENTA DE ACCESO RÁPIDO, 39
PERSONALIZAR CINTA, 40
PICTURE, 73, 113
PICTURESIZEMODE, 73, 113
PROGRAMADOR, 39, 40, 75
PROTEGER, 30, 31, 48, 55, 77, 122
PROTEGER HOJA, 30, 31, 48, 55, 77
R
RANGO, 27
RANGO DE CELDAS, 41
REFERENCIA DE CELDA, 21, 37
RELLENO, 53
S
SELECCIONAR CELDAS BLOQUEADAS, 30, 31, 48, 55, 77, 92, 120, 125, 130, 134, 158, 159
SELECCIONAR TODO, 18, 24, 33, 50, 57
SELLENGTH, 152
SELSTART, 152
T
TEXTBOX, 84, 87, 88, 89, 95, 97, 98, 104, 109, 110, 123, 127, 128, 137, 148, 152
TEXTLENGTH, 149
THISWORKBOOK, 144
U
USERFORM, 71, 129, 136, 151, 153, 156
V
VALIDACIÓN DE DATOS, 46, 58
VALOR MÁXIMO, 27, 28, 47
VALOR MÍNIMO, 27
VISTA, 30, 39, 48, 69, 77, 91, 103, 107, 119, 121, 135, 144, 147
VISUAL BASIC FOR APPLICATION, 71, 84
W
Wordart, 141
WORKBOOK, 144