Programar eventos a nivel de aplicación en Excel

Mediante el editor de Visual Basic integrado en Excel es posible controlar determinados eventos que acontencen en un libro de trabajo. Por ejemplo abrirlo, cerrarlo, cambiar la selección, guardar, etc. Te explicamos cómo controlarlos en todos los libros de trabajo que abres, no en uno en particular.

Programar eventos a nivel de aplicación en Excel
Dificultad:
alta
Tiempo:
20 minutos

1: Abre tu libro de trabajo y accede al Editor de Visual Basic

En nuestro artículo Marca una fila completa en Excel con cada click te explicábamos cómo lograr que, al cambiar la selección activa, es decir al hacer click en otra celda, además de esta celda quedase también seleccionada su fila completa.

Lo hicimos mediante código VBA, controlando el evento de Excel de cambio de selección. Sin embargo, esa macro sólo funciona para el libro de trabajo en el que se crea la macro, así que te proponemos una alternativa que funcionará en cualquier libro de trabajo de Excel. Para ello debes utilizar un código VBA algo más complejo, basado en el uso de módulos de clase, para que sea posible programar los eventos de Excel a nivel de aplicación.

Para que lo veas más claro, utilizamos un ejemplo muy similar al de aquel artículo (seleccionar la fila completa con un click), así que nuevamente lo primero que tendremos que hacer abrimos el libro en cuestión. En principio, al pinchar en una celda cualquiera, sólo ella queda seleccionada.

Hoja de cálculo

Seguidamente, presiona las teclas Alt+F11 para así acceder al editor de Visual Basic.

Editor Visual Basic

2: Crea un módulo de clase e introduce su código

Desde la parte izquierda de la ventana del editor de Visual Basic de Excel, lo primero que tienes que hacer es seleccionar la entrada correspondiente a un libro de trabajo de Excel "especial" que se llama Personal.xls.

Personal.xls

A continuación haz click en los menús Insertar>Módulo de clase. Obtendrás así un módulo en blanco en el panel derecho, en el que deberás teclear el código VBA de la nueva macro.

Primer código

La primera línea y las tres últimas son las que se encargan de declarar e inicializar el objeto app a nivel de aplicación. El segundo procedimiento es el que hace referencia al evento de cambio de selección de todos los libros (SheetSelectionChange), y en él se debe introducir el código que se ejecutará al cambiar la selección en cualquier hoja, es decir, al pinchar en una celda distinta a la que tuvieses seleccionada. En este caso, lo que ocurrirá la pinchar en otra celda (cambiar de selección) es que quedará marcada la fila completa a la que pertenezca la celda seleccionada.

Obviamente, según el caso, podrás programar otros eventos distintos y otras acciones. Desde la lista superior derecha, puedes seleccionar otros eventos de Excel.

Eventos

3: El último código en el libro Personal.xsl

Como te hemos dicho, el libro Personal.xls es un libro "especial" que incluye Excel. Para terminar este práctico, debes incluir en él unas últimas línea de código VBA. Para ello, A continuación, desde la entrada anterior (la de Personal.xls), haz doble click sobre la denominada ThisWorkbook.

Codigo2

Lo siguiente que debes hacer es teclear unas líneas de código VBA, en las que se haga referencia a la clase que has creado antes y, además, crearás una instancia de ella.

Workbook

Cuando termines, pulsa el botón de guardar cambios y cierra la ventana del editor y la de la propia aplicación Excel.

4: Prueba el funcionamiento de la macro en cualquier libro

Como te hemos dicho, al programar los eventos de Excel a nivel de aplicación, la macro que has creado debería funcionar en cualquier libro de Excel, al cambiar de selección. Para comprobarlo, abre de nuevo Microsoft Excel y, desde este programa, cualquier hoja de cálculo. Comprueba que en él también funciona la selección automática. Es decir, al pinchar en cualquier celda, la fila completa a la que pertenece aquella quedará seleccionada.

Fila completa

Abre otro libro de trabajo distinto y comprueba que, al pinchar en cualquier celda, toda su fila quedará también marcada.

Fila completa 2