Los clásicos controles de formularios (en la imagen verán como acceder a ellos) se utilizan, por lo general, con el sólo objetivo de dar un mayor impacto visual al proyecto, obviando su combianción con formulas, aumentando así también su funcionalidad.
Veamos como acceder a ciertas propiedades de estos objetos para hacer mas productiva nuestra interfaz de usuario.
Dentro de los controles de formulario encontramos varias opciones que son comunes al entorno de Windows (cajas, listas desplegables, botones, botones de opción, etc, etc), por lo que trabajar con ellos será muy sencillo e intuitivo. Primeramente tendremos en cuenta: cualquiera de estos controles pueden estar vinculados con una celda o rango; al hacer click o cambiar el valor en ellos también cambiará el valor de la celda vinculada... y es allí donde aprovecharemos para introducir funciones.
1) El Cuadro de Lista: este control es la tipica "caja" de Windows, con la posibilidad de introducir dentro de ella varios items, para luego seleccionarlos:
Ahora llenemos este control con datos, que provendran de un rango. Hacemos click con el botón derecho del mouse sobre el, seleccionamos la opcion "Formato de control" y nos vamos a la pestaña "Control", configurando las entradas de la siguiente forma:
primero: el rango en donde están los datos que se reflejarán dentro del control; segundo: a que celda vinculamos el control... y tercero: elegimos la selección "simple" (de a uno)
Presionamos "Acepar" y rellenemos el rango E1:E5 con valores:
analicemos esta imagen: los datos del rango E1:E5 están dentro del control y, como verán, en A10 (celda vinculada) se observa el numero 3 ¿por que? por que tengo seleccionado el tercer elemento de la lista.
Y es casualmente ese 3 el que aprovecharé para fusionar los controles con las formulas, de la siguiente manera:
extendí la tabla con mas datos y luego, en B12 y B13 utilicé la función BUSCARV() para traer información sobre el producto seleccionado. Noten que en el Cuadro de Lista se encuentra seleccionado "VOLKSWAGEN", y el precio y origen son los que traigo de la tabla.
Ocultando algunas filas y columnas, la presentación final quedaría:
Así evitamos cualquier tipo de error en el ingreso de datos por parte del usuario y, encima, facilitamos su trabajo diario.
Agregaremos un par de Casillas de Verificación (checkboxes en VBA), a las cuales las reconocerán a simple vista. Las utilizaremos para agregar o nó características a nuestro auto, lo que hará que este vaya aumentando su precio, en base a las selecciones efectuadas. Colocamos una en la hoja y la configuramos:
este control solo nos solicita que lo vinculemos a una celda. en este caso, I4. Al valor por defecto lo dejamos en "sin activar".
Si la Casilla está activada, en I4 nos aparecerá "verdadero"; caso contrario "falso", como lo demuestran las siguientes imágenes:
Exacto, tal cual lo pensaron: aprovechando esos estados (verdadero / falso) haré uso de la función SI() y otorgaré mas funcionalidad a mi formulario: en la Columna J pondré al lado de cada celda el valor de la mejora seleccionada, la cual iré sumando en un Subtotal al valor original del auto "base":
Si es verdadero, pone el precio, de lo contrario, 0 (cero). Nos resta ahora ocultar las columnas J e I.
Podriamos agregar Botones de Opción, a los cuales conviene agruparlos dentro de otro control, llamado "Marco" (o Frame), cuya finalidad es la de unir criterios y hacer que todos los Botones que se encuentren ahí dentro respondan a una misma celda.
vinculamos los tres Botones de opcion a la celda K1, lo que nos cambiará el valor de dicha celda según que botón tengamos seleccionado:
el Motor 1.8 es la segunda opcion, por eso en K21 (celda vinculada) me aparece el 2.
Una forma de resolver en forma sencilla el precio de cada motor es utilizando la funcion ELEGIR():
Donde me devuelve el valor (en este caso, $3000), coloqué la siguiente funcion:
=ELEGIR(K21;K22;K23;K24)
O sea: en base al valor (indice) presente en K21, la función me retornará el dato presente en K22, K23 o bien K24. Esto se puede realizar también con BuscarV() o Indice(), pero preferí hacer uso de una menos conocida, como lo es Elegir()
A estas alturas, nuestro formulario está de la siguiente forma:
si bien requiere de cierta planificación el uso de estos controles, es innegable la velocidad y seguridad que le damos a nuestros usuarios a la hora de completarlos.
Otro control, que funciona igual que el Cuadro de Lista, es el Cuadro Combinado (combobox), usaremos uno u otro dependiendo del espacio disponible y el diseño aplicado. Ahora aprovecharé este control para controlar la bonificación o recargo según la forma de pago seleccionada:
ya definimos el rango de entrada de datos y la celda vinculada.
Veamos un pantallazo mas general:
notarán que al lado de cada forma de pago coloqué las bonificaciones (en negativo) y los recargos, en positivo. Ahora hagmos que funciones en base al item seleccionado del ComboBox
Resuelvo esto con la función Indice() y sobre el resultado devuelto, calculo las primas:
La función queda: =C27*(INDICE(M31:M34;L30))/100
con el siguiente resultado:
"cheques propios" es la segunda opcion del ComboBox, entonces al subtotal del auto le calculo el 5% menos... en caso de pago financiado, el resultado sería:
"financiado" es la tercer opcion... con Indice() hago que me retorne el porcentaje a aplicar, presente en la columna M.
Habran notado que en la celda B31 las palabras "recargo" o "bonificacion" cambian automáticamente; a esto lo hago con la funcion Si():
=SI(C31<0;"bonificacion";"recargo")
y así evitar que el usuario se equivoque e ingrese cualquier valor erróneamente.
Segun lo trabajado hasta el momento, nuestro formulario debería presentar el siguiente aspecto:
va queriendo.....
Estamos en condiciones de agregar un control mas: la Barra de Desplazamiento. Si, esas que son iguales a las que están presentes en las ventanas. Este control posee varias características y lo utilizaremos para ingresar datos numéricos: cada vez que se haga click sobre el, la celda vinculada cambiará su valor. Analicen bien cada uno de los parámetros requeridos. En este caso, sacaré provecho de él para establecer los días hasta la entrega de la unidad:
de esta forma me aseguro que el valor nunca será menor a cero ni mayor a 60 días. El incremento (cada vez que el usuario haga click) se hará de a una unidad. Y el cambio de página (cuando hacemos click sobre el espacio en blanco de la barra) hará que "saltemos" de a 10 días.
El control debe quedar así:
en la fila 38 utilicé la funcion Concatenar(), de la siguiente forma:
=CONCATENAR("Plazo de entrega: ";N36;" dia/s")
Bueno, hasta aquí un panorama en general de la utilidad de estos controles: sin soltar el mouse, nuestro usuario arma un completo presupuesto, y no le damos margen de error, ya que no podrá modificar "a mano" los datos que se encuentran dentro de cada control.
Resta aclarar que a cada objeto podemos también asignarle macros. Damos con el boton derecho del mouse en el Cuadro Combinado y seleccionamos "asignar macro":
Presionamos el botón "nuevo" y esto nos llevará directamente a la ventana de código de VBA, con el procedimiento ya armado:
y dentro de dicho sub, escribimos nuestro código o copiarmos alguna macro grabada, lo que aumentará enormemente el control y funcionalidad de nuestro formulario.
Espero que les sirva y, como siempre, intento colocar ejemplos muy sencillos y comprensibles a todos. Si sugen inconvenientes, en este link dejen sus dudas.
Y también como de costumbre, les dejo el archivo utilizado, para que puedan explorarlo.
Suerte.
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Etiquetas
Varios
Etiquetas:
Varios
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Comentarios
Publicar un comentario