No voy a hablar de los miles de menús que me comí en los restaurantes de la
capital de España, durante los 9 años que estuve trabajando en varias oficinas
de Madrid.
Voy a hablar de cómo hacer menús interactivos usando la
segmentación de datos para filtrar datos de tablas dinámicas (Slicers
en inglés), con un ejemplo de un tablero de ajedrez interactivo.
He intentado que los menús sean intuitivos, vistosos, amigables y fáciles de
usar y de aprender, según el principio de acción-reacción, y procurando
mejorar la interfaz del usuario (User Interface - UI) y la experiencia del usuario (User eXperience - UX). Aunque no he programado la posiblidad de deshacer ninguna de las acciones
con los menús, siempre se puede obtener cualquier posición de las piezas de
ajedrez en el tablero o incluso borrarlas todas y comenzar de nuevo.
En esta entrada del blog aprenderemos a:
Mantener dos tablas dinámicas: una con un único filtro para el menú y otra
con un filtro para los submenús.
Mantener dos tablas normales: una para el menú y otra para los submenús.
Mantener una tabla auxiliar para los submenús con su posición, número de
filas y de columnas.
Modificar la segmentación de datos del menú.
Modificar la segmentación de datos de los submenús.
Analizar las macros de Excel, en lenguaje VBA, que interactúan con los
menús y submenús.
Representar un tablero de ajedrez interactivo dentro de un rango de celdas
de una hoja de cálculo.
Esta es la apariencia que tiene el menú principal y los diferente subménus
gráficos, con un ejemplo de cómo animar un tablero de ajedrez en Excel.
En esta imagen gif animada se muestra un menú principal, numerado del 1
al 7, diseñado con una segmentación de datos. Los 7 submenús están diseñados
con una única segmentación de datos con un formato de filas y columnas
diferente para cada uno de los submenús. Los submenús se despliegan a la
altura de su correspondiente entrada desde el menú principal. Algunos submenús
son de texto y otros son gráficos, como las piezas del ajedrez o sus posibles
movimientos en vertical, horizontal o diagonal.
Descarga de la plantilla
Descarga la plantilla totalmente gratuita, con las macros visibles y las hojas
protegidas sin contraseña, desde Google (con el botón "Excel Download") o
desde el enlace a Microsoft OneDrive:
Para crear los menús hace falta una hoja auxiliar 'TD_Menu' en la que
se han insertado 3 tablas normales, un rango para los submenús y una celda
auxiliar:
TablaMenu: Para el menú principal en el rango E4:E11 con la lista
de submenús numerados.
TablaSubmenus: Para los submenús en el rango H14:N16 con una
columna por cada submenú, con los valores posibles de cada submenú.
TablaSubmenu: Tabla auxiliar con los valores del submenú
seleccionado en el menú principal.
Rango de parametrización de cada submenú: Rango F26:N29 con el
tope, filas y columnas de la segmentación de datos que sirven para
personalizar cada submenú.
Celda auxiliar: En la celda E2 se calcula el número de submenú
elegido en el menú principal.
La tabla para el menú principal se puede personalizar para cambiarlo según las
necesidades del usuario final. En este ejemplo, con traducción simultánea a
varios idiomas, los valores del menú principal se encuentran en la hoja
'Idiomas', desde donde se deben cambiar:
En la columna de la izquierda se muestra la tabla con el submenú elegido y las
demás columnas son de la tabla de submenús, que se pueden personalizar para
formar otro tipo de submenús. Hay que tener en cuenta que, para la traducción
a varios idiomas, los valores del submenú 4 (Iniciar; Borrar) y del submenú 7
(SI; NO) están en la tabla de la hoja 'Idiomas':
En esta imagen se muestra el rango de parametrización de la segmentación de
datos de cada submenú. Hay que prestar atención que en la fila de "Columnas"
el valor del número de columnas del submenú 6 es fijo:
Tablas dinámicas para el menú y los submenús
En la hoja auxiliar 'TD_Menu' se han insertado dos tablas dinámicas:
TD_Menu: Para el menú principal en el rango B4:C4 con origen de
datos en la TablaMenu y sólo con un filtro para el campo "Menu".
TD_Submenu: Para el submenú en el rango B14:C14 con origen de
datos en la TablaSubmenu y sólo con un filtro para el campo
"Submenu".
Segmentación de datos del menú principal
La segmentación de datos del menú principal está conectada con la tabla
dinámica TD_Menu y está en la hoja 'Tablero'.
La configuración de la segmentación de datos es la siguiente:
Mostrar encabezado en estado sin chequear.
Se ha creado un nuevo estilo de segmentación de datos sin bordes.
Segmentación de datos de los submenús
La segmentación de datos de los submenús está conectada con la tabla dinámica
TD_Submenu y está en la hoja
'Tablero'.
Se basa en la misma configuración de la segmentación de datos del menú
principal, sin mostrar encabezado ni bordes.
La principal ventaja de está técnica para diseñar menús y submenús es que la
misma segmentación de datos de submenús sirve para mostrar cada uno de los
submenús, simplemente variando su posición, su número de filas y columnas y
los valores del submenú seleccionado con el menú principal, gracias a las
tablas de la hoja 'TD_Menu'
que ya he descrito más arriba.
Con una única segmentación de datos se configuran varios submenús, por
ejemplo:
Se puede observar que algunos de ellos están formados por caracteres gráficos,
como las piezas de ajedrez o las flechas de movimiento. Para ordenar las
flechas de movimiento ha hecho falta definir, en las opciones avanzadas de
Excel, una nueva lista personalizada:
Lo importante es que los submenús cambian dinámicamente cuando se cambia la
selección del submenú desde el menú principal y se coloca a la altura del
submenú elegido. Lo mejor es verlo en el siguiente vídeo en acción :
Al seleccionar en el menú principal la opción "1. Fuente" aparece el submenú
con la lista de las dos fuentes programadas:
Segoe UI Symbol
Times New Roman
Las figuras de las piezas del ajedrez creo que se llaman trebejos. De la hoja
'Ajedrez' se obtiene la posición inicial de las piezas en una partida
de ajedrez y ejemplos de las dos fuentes que pintan las piezas:
Macros del menú y los submenús
Cuando se selecciona un menú o un submenú se ejecutan las macros Excel,
escritas en lenguaje VBA, que permiten la interacción con el tablero de
ajedrez del ejemplo propuesto.
Para explicar e interpretar las macros de esta aplicación es preciso conocer
los nombres definidos que son los que aparecen en el menú:
Fórmulas --> Administrador de nombres
Nombres definidos más relevantes:
Rango_TD_Submenu: Es el origen de datos de la tabla dinámica
TD_Submenu, creado mediante las funciones INDICE() y CONTAR.SI(),
esta última con el argumento "?*" con comodines para contar
solamente las filas con datos.
Rango_Tabla_Submenu: Con el rango completo de la tabla
"TablaSubmenu", que se usa en el nombre definido anteriormente:
Rango_TD_Submenu
El resto de nombres definidos son rangos o celdas para que sea más clara y
fácil su referencia en las fórmulas y macros.
Módulos de la aplicación
Hoja 'Tablero': Se produce el evento
SelectionChange cuando cambia la celda seleccionada de la hoja y
que representa un escaque del tablero de ajedrez. Se ejecuta la
macro GetSubmenu únicamente cuando se ha seleccionado en el
menú principal el submenú 2 con las piezas.
Hoja 'TD_Menu': Se produce el evento Change cuando
cambia el valor de la celda. Si cambia el valor del filtro de la tabla
dinámica TD_Menu se ejecuta la macro ChangeSubmenu. Si
cambia el valor del filtro de la tabla dinámica TD_Submenu se
ejecuta la macro ActionSubmenu.
Hoja 'ThisWorkbook': Los eventos
Open; BeforeSave y BeforeClose lanzan la macro para proteger las
hojas ProtectSheets. Además el evento Open oculta todos
los menús y barras de Excel llamando a la macro VisibleExcel.
Módulo modChangeMenu: Contiene las macros necesarias para
interactuar con el menú principal y con los submenús:
ChangeSubmenu: Realiza las acciones que permiten el cambio de un
submenú desde el menú principal.
GetSubmenu: Obtiene el último valor del submenú seleccionado, por
lo que hay que modificar el número de casos si se cambian los submenús.
ActionSubmenu: Ejecuta las acciones de un determinado submenú,
por lo que hay que modificar el número de casos si se cambian los
submenús.
Select2Slicer: Llama 2 veces a la
macro SelectSlicerItem, pues devuelve un error la primera
vez. A tener en cuenta para una mejora.
SelectSlicerItem: Selecciona un único valor de la segmentación de
datos.
TopMenu: Obtiene el tope de la posición de la segmentación de
datos del menú principal.
RowHeightMenu: Obtiene el alto de la fila de la segmentación de
datos del menú principal.
SelectFirstValuePivotTable: Cuando se seleccionan múltiples
valores en una segmentación de datos, obtiene solamente el primer valor.
RefreshAll: Refresca la caché de las 2 tablas dinámicas y las
fórmulas de todo el libro de trabajo.
Módulo modChangeChessboard: Contiene las macros necesarias
para interactuar con el tablero de ajedrez:
ChangeChessboard: Borra todas las piezas del tablero o inicializa
el tablero con la posición inicial de las piezas en una partida de
ajedrez.
IniChessboard: inicializa el tablero con la posición inicial de
las piezas en una partida de ajedrez.
DeleteChessboard: Borra todas las piezas del tablero.
ChangeFont: Cambia la fuente de caracteres de las piezas de
ajedrez.
ChangePiece: Cambia la pieza de ajedrez en una de las celdas que
representa un escaque.
MovePiece: Mueve una pieza de ajedrez a otro escaque del tablero.
Módulo modChangeProtect: Macros para proteger las hojas:
ProtectSheets: Protege las hojas sin contraseña.
UnprotectSheets: Desprotege las hojas.
ProtectOneSheet: Protege una hoja de los usuarios pero no de las
macros, gracias al argumento: UserInterfaceOnly:=True
UnprotectOneSheet: Desprotege una hoja.
Módulo modHideExcel: Macros para ocultar o mostrar los menús y
barras propias de Excel. Se puede ocultar todo excepto el título de la
aplicacion. Como este módulo es un extra de ejemplo, no voy a explicar
cada una de las macros. Quien tenga ganas de estudiarlas que las analice
ya que son muy claras y simples, como dice el conocido bloguero
Robert Mundigl en su blog Clearly and Simply, del que tanto estoy aprendiendo y que recomiendo desde estas líneas. Si
has llegado a leer hasta aquí, lo que si recomiendo es optar por no
ocultar Excel desde el menú, ya que quitar la ocultación manualmente es un
trabajo arduo.
Más juegos de ajedrez en este blog
Desde que uso Excel me gusta escribir publicaciones en el blog sobre ajedrez,
aquí tienes unos cuantos ejemplos que espero que te gusten y que hagas
comentarios sobre ellos en alguna de las entradas del blog:
Cuando escriba el próximo artículo ya estaré felizmente jubilado y mi idea es
construir próximamente un tablero con la historia de los 40 años de
mi carrera profesional (enlace aquí), en un storyboard dinámico como el que aparece en el siguiente enlace,
pero con otra técnica:
A practical Example for Dynamic Storyboards
Si detectas alguna traducción incorrecta al cambiar de idioma, dímelo en un
comentario o modifica tú mismo la tabla con los idiomas, a partir de la
columna C de la hoja 'Idiomas', donde puedes añadir más columnas si quieres
más idiomas...
No Response to "Menús segmentados en un tablero de ajedrez"
Leave A Reply
Indícame las erratas que encuentres y qué es lo que te gustaría ver en los próximos artículos.
Nueva Función TRIMRANGE y Nuevo Operador de Rango
-
Hoy vengo con novedades emocionantes en Excel: Microsoft ha liberado una
nueva función llamada TRIMRANGE y ha introducido un nuevo […]
The post Nueva Fun...
Divisor propio mayor que la raíz cuadrada
-
Explorando por OEIS, encontré un tipo de números en https://oeis.org/A332269
y me ha apetecido desarrollar el tema mediante nuestras funciones en hoja ...
3DFrame-py; with non-linear analysis
-
Exactly a year since the previous update I have revised the 3DFrame-py
spreadsheet with the addition of non-linear analysis options. The new files
can be d...
Tiempo pasado, presente y futuro
-
🔝*To translate this blog post to your language, select it in the top left
Google box. *
AVISOS que salvan vidas
Haciendo caso de las posibles inund...
5 Ways to Calculate Hours Worked in Microsoft Excel
-
Wondering how to calculate hours worked in Excel? You’ve reached the best
resource to learn from. So, tag along! Calculating time values in Microsoft
Excel...
Debra’s Excel News–October 2024
-
New PIVOTBY function, get ready for Spreadsheet Day, and more, in this
month’s Excel news. Visit my Excel website for more tips, tutorials and
videos, and ...
How To Predict Bearing Life With Excel
-
When you work in mechanical engineering, understanding the reliability and
performance of bearings under various conditions is crucial. Bearings are
the co...
TikTok’s search evolution
-
2 in 5 Americans use TikTok as a search engine. Nearly 1 in 10 Gen Zers are
more likely to rely on TikTok than Google as a search engine. More than
half of...
Interés compuesto con Excel
-
Este es un mapa mental de las distintas funciones Excel para calcular el
valor del dinero en el tiempo aplicando la ley de capitalización compuesta.
En ...
Unblocking and Enabling Macros
-
When Windows detects that a file has come from a computer other than the
one you're using, it marks the file as coming from the web, and blocks the
file....
-
Aprendiendo Unreal Engine 5. ¿Por dónde empiezo?
Desde la presentación de la Comunidad Oficial de desarrolladores de Unreal
Engine de Málaga, he recibido m...
Navigating Outlook Favorites
-
I have these four favorites defined in Outlook: From the inbox, I could hit
Shift+F6 to get into the Favorites area but sometimes I would end up in no
man’...
Office Scripts: Trabajando con Tablas
-
[image: Office Scripts: Trabajando con Tablas]
Me he dado cuenta que últimamente solo escribo de lenguaje M (es mi pequeño
vicio)... pero hay que liberar l...
Progress on the Block Protocol
-
Since the 1990s, the web has been a publishing place for human-readable
documents. Documents published on the web are in HTML. HTML has a little
bit of… Re...
London Excel Meetup Workbooks
-
The workbooks used in my presentation on “Analytical and Interactive
Dashboards in Excel” at the London Excel Meetup, September 3, 2020
Mis metas son seguir superando nuevos retos en Excel y compartirlos en mi blog, para sacarle todo el poder a esta excelente herramienta multiusos, tan usada y a la vez tan incomprendida, para así poder mejorar nuestros conocimientos de Excel.
No Response to "Menús segmentados en un tablero de ajedrez"
Leave A Reply
Indícame las erratas que encuentres y qué es lo que te gustaría ver en los próximos artículos.