Agrupar controles botones de opción en hojas Excel.

sábado, julio 21, 2007

En la entrada sobre Agregando controles en hojas de cálculo mostré como agregar controles, tal como botones de opción o barras de desplazamiento, en una hoja de Excel.

Últimamente he recibido varias consultas sobre como crear grupos de botones de opción.
Cuando agregamos varios botones de opción en una hoja, Excel acepta una sola celda vinculada para todos los controles. Es decir, Excel agrupa todos los botones de opción en un solo grupo, no importa dónde o como los ubiquemos. Inclusive si definimos para cada botón una celda vinculada distinta, veremos que en todos los controles aparece como celda vinculada la última que hemos definido.

La técnica para superar este inconveniente depende de qué tipo de control estemos usando. Excel permite agregar dos tipos de controles directamente en la hoja: los controles de la barra de Formularios y los del cuadro de controles (controles ActiveX).




Supongamos que queremos crear un formulario para definir nuevos clientes. En este formulario definimos el nombre del cliente, el tipo (mayorista o minorista) y el tipo de crédito (15, 30 o 45 días). Nuestro formulario se verá así


Si usamos los controles de la barra de formularios, el truco consiste en poner cada uno de los grupos de botones de opción dentro de controles "cuadro de grupo" distintos. Para crear el formulario seguimos estos pasos:

1 – Ponemos un fondo gris al rango B2:F20
2 – Seleccionamos la celda C4 y ponemos "Nombre"
3 – Combinamos y centramos el rango D4:E4, y le quitamos el fondo gris
4 – Abrimos la barra de formularios y arrastramos dos cuadros de grupo



5 - Dentro de uno de los cuadro de grupo ponemos los botones de tipo de cliente. En el otro ponemos los botones de tipo de crédito. Cambiamos los encabezamientos directamente en el control.
6 – Los botones de tipo de cliente están ligados a la celda H3; los de tipo de crédito a la celda H4.
7 – Agregamos un control "botón" que nos servirá para activar una macro que agregue el nuevo cliente a nuestra base de datos (la hoja "Clientes")

En la celda I3 ponemos la fórmula =ELEGIR(H3;"Mayorista";"Minorista"); en la celda I4 la fórmula =ELEGIR(H4;"15 días";"30 días";"45 días")

Si usamos los controles ActiveX de la barra Cuadro de Controles, el truco consiste en cambiar la definición del Groupname en la propiedades del botón y darle a los botones del grupo el mismo Groupname.



En nuestro ejemplo los botones de tipo de cliente tienen como Groupname "Tipo" y los del tipo de crédito "Crédito".
Otro punto importante es que a cada control le definimos una celda vinculada distinta, a diferencia de los controles de la barra de formularios.

Sobre cómo definir los distintos controles, pueden consultar mi nota mencionada al principio.

En general es más fácil trabajar con los controles de la barra de formularios que con los controles ActiveX de la barra de cuadro de controles. La contrapartida es que los controles ActiveX tienen más posibilidades y son más flexibles a nuestras necesidades.

La hoja con los ejemplos y las macros se pueden descargar aquí.

17 comments:

Jorge L. Dunkelman 23 julio, 2007 20:08  

Pablo,

no estoy publicando tu comentario ya que no está relacionado con el contenido de la nota.
Ponte en contacto conmigo por mail (jorgedun@gmail.com)

Anónimo,  26 julio, 2007 03:04  

Hola, felicidades por su blog, hace tiempo que soy asiduo lector y he usado muchas de las soluciones que muestra.

Tengo una pregunta sobre un tema que toco en el pasado referente a la funcion buscarv, al hacer la busqueda en varias paginas como hago para que busque en mas de un archivo?, es o no posible.

Mil gracias por cualquier sugerencia acerca del asunto.

Atte:

Carlos Rangel

Anónimo,  30 julio, 2007 17:31  

Estimado Sr.Desde hace tiempo Utilizo su valioso Blog en temas de trabajo, por ello le doy las gracias. con respecto a los controles de la barra de formularios los he aplicado en una utlidad muu sencilla al evaluar propuesta de ofertas en una licitacion, solo para dar una mejor presentacion, ¿como se puede desmarcar mediante alguna macro tanto las casillas de verificacion como los botones de opcion una vez ingresados los datos, para volver a ingresa unos nuevos?...no se si me explique bien..
Atte.,
Mauricio Barrientos P.
Punta Arenas
Chile

Jorge L. Dunkelman 08 agosto, 2007 18:26  

Efectivamente, con una macro. Por ejemplo, en el caso de una casilla de verificación la macro tendría que poner el valor False a la propiedad Value para que la casilla no esté marcada.

Jorge L. Dunkelman 06 septiembre, 2007 19:02  

Carlos

es posible y creo haber visto una nota sobre el tema en algun sitio sobre Excel.
De todas maneras hay que preguntarse si en una situación como esa, no es más conveniente organizar los datos de otra manera o usar un database verdadero.

Anónimo,  10 octubre, 2007 19:09  

Quisiera saber si es posible enumerar a partir de la celda A2 los datos que se generan mediante el formulario, o dejar libre ésta columna y comenzar a partir de la celda B2 la BD. Muchas gracias por la ayuda.

El blog es muy bueno, felicidades!!

Raúl Espinosa

Jorge L. Dunkelman 11 octubre, 2007 18:18  

Hola Raúl

se puede. Hay una macro que maneja la introducción de los datos. La puedes ver abriendo el editor de Vba (Herramientas--Macro--Editor Vba). All+i puedes cambiar los parámetros que gobiernan la ubicación de los datos.

Albertinho 12 marzo, 2008 13:22  

Hola Jorge,

Es posible hacer los cuadros de grupo invisibles? He procedido como en el ejemplo y todo ha resultado correcto, pero desearía que la línea negra de los cuadros de grupo no fuera visible. Se puede hacer?

Muchisimas gracias y felicidades por esta maravilla de blog!

Albert

Jorge L. Dunkelman 12 marzo, 2008 19:55  

Hola Albert
se puede hacer pero usando otro control. En lugar de cuadro de grupo, tienes que usar Frame. Lo encuentras en la barra de ActiveX pulsando el icono de More Controls.
Una vez que pongas el control y los botones (con la tecnica de GroupName indicada en la nota), puedes cambiar las propiedades de Frame volviéndolo transparante (propiedad BackStyle = Transparent).

Alonso 22 julio, 2009 23:56  

FELICITACIONES POR SU APORTE ME HA SERVIDO DE GRAN UTILIDAD GRACIAS POR COMPARTIR TUS CONOCIMIENTOS
SALUDOS

Anónimo,  19 marzo, 2010 16:19  

PAURAU1000
PUEDES SER MAS CLARO EN LA CREACION DE LA MACRO PARA INGRESAR A LOS CLIENTES

Jorge L. Dunkelman 19 marzo, 2010 17:10  

Puedes descargar el archivo y ver la macro con el editor de VBa (Herramientas-Macro-Editor Vba)

julio 21 octubre, 2010 21:12  

Jorge,

estoy trabajando con checkboxes(del formulario), es posible que cuando selecciones uno de estos, otros se desactiven?...o todos funcionan en forma independiente. Lo que pasa es que los tengo linkeados a un grafico y necesito que al seleccionar un checkbox otros se desactiven para no alterar la informacion del mismo.

Gracias,
PD.-No estoy trabajando con macros.
Julio

Jorge L. Dunkelman 21 octubre, 2010 23:09  

Julio,

la respuesta fue por mail (vi primero tu mail y después el comentario).

Tomás Del Valle 05 diciembre, 2010 00:38  

Parísimo!!! Muchas Gracias

Anónimo,  16 mayo, 2011 03:30  

Eureka estimadísimo Jorge "Yorch" eureka ('mua' 'mua' 'mua'), justo en esta publicación tuya he encontrado la respuesta a la duda que te planteaba respecto a los BOTONES DE OPCIÓN, solo fue cuestión de seguirte la pista (leerte hasta el final, parándose uno en puntos y comas), gracias por brindarnos esta prosa tuya tan detallada, tan suntuosa.
Mahalo (quiero decir gracias) por alumbrar mi camino al 'saber'. No, aun no me voy sigo leyéndote.
Normeishon =)

Anónimo,  16 mayo, 2011 03:43  

Eureka estimadísimo Jorge "Yorch" eureka ('mua' 'mua' 'mua'), justo en esta publicación tuya he encontrado la respuesta a la duda que te planteaba respecto a los BOTONES DE OPCIÓN, solo fue cuestión de seguirte la pista (leerte hasta el final, así, parándose uno en puntos y comas), gracias por brindarnos esta prosa tuya tan detallada, tan suntuosa.

Mahalo (quiero decir gracias) por alumbrar mi camino al 'saber'. No, aun no me voy sigo leyéndote.

Normeishon =)

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP