miércoles, 7 de enero de 2015

Cargar un Cuadro Combinado o ComboBox de la Cinta de Opciones de Excel en Tiempo de Ejecución, usando VBA y XML.

Curso: Personalizar la UI de
Excel con XML y VBA.
Formato:
Vídeo/Tutorial.
Archivos necesarios:Personal v0.03.xlsm
Anterior Vídeo/Tutorial:Filtrar Datos usan...
Acceso a los vídeos 
en Youtube:
Seguimos con otra sesión más dedicada a los ComboBox o Cuadros combinados que podemos crear en la Cinta de Opciones, utilizando XML y VBA. En esta ocasión os voy a explicar otra vez como crear un ComboBox. Pero en lugar de hacer todo el trabajo desde el código XML, el contenido del Cuadro Combinado lo vamos a crear en Tiempo de Ejecución. Es decir, en lugar de crear items en el código XML, en lugar de crear opciones fijas... Vamos a crear items en tiempo de ejecución con código VBA, vamos a crear opciones dinámicamente. Para la explicación, vamos a utilizar el ejemplo de los filtros aplicados desde un ComboBox de la Ribbon, pero ahora las poblaciones y opciones que aparecían en el cuadro combinado, las cargaremos desde una hoja de Excel y desde código. Al inicio del vídeo os explico todo con más detalle.

Principalmente os voy a explicar los atributos de un ComboBox que permiten cargar sus opciones en tiempo de ejecución. Son tres: getItemCount, getItemLabel y getItemID. Estos tres atributos permiten llamar a procedimientos de VBA que serán los encargados de crear las opciones del combo. De nuevo, el que espere un acceso directo y sencillo a un control de la Cinta de Opciones, que se olvide. Es un trabajo bastante laborioso el que hay que hacer, pero creo que merece mucho la pena por el resultado que se consigue.

Debo aclarar, que en esta sesión os explico como cargar las opciones que estarán preparadas para el primer acceso al cuadro combinado, para la primera vez que se use. En la siguiente sesión, haremos las modificaciones necesarias para actualizar el cuadro combinado automáticamente mientras estamos trabajando en el documento que contiene la modificación de la Ribbon que estamos creando en el ejemplo. No hay que escribir mucho más código para conseguirlo, pero era demasiado contenido para una sola sesión, demasiados conceptos.

Ya os digo que en mi opinión es una sesión muy interesante, reservaros una hora de vuestro tiempo para seguirla y seguro que enseguida se os empezarán a ocurrir ideas para aplicar en vuestros documentos. Para realizar los pasos que veréis en el vídeo os podéis descargar el siguiente documento de Excel que voy a utilizar en el vídeo:

Como siempre aquí tenéis los enlaces para ver los dos vídeos desde el Blog, espero que os gusten:

  • Nombre: Cargar un Cuadro Combinado o ComboBox de la Cinta de Opciones en Tiempo de Ejecución, usando VBA y XML.
  • Versión de Excel: ES/Español.
  • Audio: Español.
  • Subtítulos: Español.
  • Duración Total Vídeos: 35m 06s.

Vídeo 1 de 2.


Vídeo 2 de 2.

Nada más por esta semana. A ver si poco a poco voy cogiendo ritmo estable de publicaciones...

jueves, 1 de enero de 2015

¡Feliz Año 2015!



¡Feliz año 2015!

Esperemos que este nuevo año, mejore el anterior y todos tengamos lo que deseamos. Para los Reyes Magos, volverán las publicaciones... ;)

martes, 9 de diciembre de 2014

Cómo Filtrar Datos en Excel con un ComboBox de la Cinta de Opciones o Ribbon, usando XML y VBA.

Curso: Personalizar la UI de
Excel con XML y VBA.
Formato:
Vídeo/Tutorial.
Archivos necesarios:Personal v0.02.xlsm.
Anterior Vídeo/Tutorial: Crear un ComboBox...
Acceso a los vídeos 
en Youtube:
Una vez que ya hemos visto en el vídeo anterior, un primer ejemplo de creación de un comboBox en la Cinta de Opciones de Excel, es hora de aprender a darle uso. Es hora de aprender a utilizar el valor u opción que se queda seleccionado en el combo, junto con otras herramientas de Excel. En este vídeo, principalmente os voy a explicar dos cosas. Os diré como acceder desde Visual Basic, desde VBA, a la opción que se ha quedado seleccionada en el combo. Y también os voy a explicar cómo indicarle a Excel que haga algo cuando se cambia la opción seleccionada de un comboBox de la Ribbon. Aunque os esperéis lo contrario, utilizar un comboBox de la Ribbon desde VBA es muy sencillo. La manera de hacerlo se asemeja mucho a lo que hacemos con los ComboBox ActiveX que podemos insertar en las hojas de Excel, utilizaremos algo similar a los eventos de los controles ActiveX.

Para explicar estos dos puntos voy a plantear uno de los ejemplos típicos de uso de un comboBox, el filtrado de información. Vamos a utilizar el comboBox que creamos en el vídeo anterior para filtrar unos datos. En concreto usaremos el combo para filtrar los datos de unos trabajadores por ciudades, por poblaciones. Dependiendo de la población seleccionada en el combo, se aplicará un filtro que solo mostrará los datos de los trabajadores de la población seleccionada. Así os explicaré como acceder al valor seleccionado del combo para obtener la población seleccionada y a como provocar que se aplique el filtro cuando se selecciona una de las poblaciones. Es decir así os explicaré los dos puntos que he comentado líneas atrás. Sobre todo os hablaré de onChange, es una propiedad o atributo de los comboBox que nos va permitir indicar un procedimiento de VB que se ejecutará al cambiar la opción seleccionada del combo. En el vídeo tenéis todos los detalles.

Para realizar los pasos que veréis en el vídeo os podéis descargar el siguiente documento de Excel que voy a utilizar en el vídeo:

Como siempre aquí tenéis los enlaces para ver los dos vídeos desde el Blog, espero que os gusten:

  • Nombre: Cómo Filtrar Datos en Excel con un ComboBox de la Cinta de Opciones o Ribbon, usando XML y VBA.
  • Versión de Excel: ES/Español.
  • Audio: Español.
  • Subtítulos: Español.
  • Duración Vídeo: 17m 24s.



Por hoy ya vale. Estos días son un poco raros, hay muchos días de fiesta y paradójicamente los días de fiesta son los que menos tiempo tengo disponible... Hay que estar con la familia y no sé si me dará tiempo a preparar mucho material, pero se intentará. En las estadísticas ya estoy viendo que está empezando el bajón navideño, intentaré por todos los medios que esto no decaiga...Algo haremos ;)

*Siguiente Sesión*: