#03 Escribe tu primera Macro en Excel.

Hoy voy a mostrarte cómo escribir tu primera Macro en Excel.

Ya vimos lo que son las macros, para que sirven y ya tienes una idea sobre cuál es la utilidad que le podríamos dar.

También hemos conversado sobre la manera en que puedes crear una macro utilizando la herramienta de grabación disponible en Excel.

Lo que haremos hoy tú y yo, será crear una macro escribiendo directamente el código VBA en el Editor de Visual Basic.

Recuerda que VBA es el acrónimo de Visual Basic For Aplications (o Visual Basic para Aplicaciones)  y se trata de un lenguaje de programación que utilizaremos para poder expresarle a Excel las instrucciones que queremos que ejecute.

El ejemplo: Una sencilla macro en Excel.

Hoy voy a mostrarte un ejemplo sencillo, por lo tanto no voy a entrar en mucho detalle sobre la sintaxis, ya que la idea es darte un primer acercamiento al editor de Visual Basic.

El ejemplo que utilizaré será el de una macro que muestre un valor en una celda determinada de la primera hoja de mi libro.

Antes de empezar, voy a decidir en qué celda quiero que aparezca el valor generado por mi macro. En la hoja 1 de mi libro, elegiré la celda B2 para la prueba y la dejaré resaltada en color amarillo para que no se pierda de vista.

Macro en Excel

El editor de Visual Basic.

Para poder escribir el código de tu macro, primero tienes que acceder a la ventana del Editor de Visual Basic. Esto se puede hacer de dos formas:

  • La primera es accediendo a la ficha ‘Programador’ (recuerda que si no tienes esta ficha, puedes ver aquí cómo activarla). Una vez aquí, debes buscar la sección ‘Código’ que está al principio de la cinta.
    En esta sección, pincha sobre el botón ‘Visual Basic’.
    Macro en Excel
  • La segunda forma es presionando el atajo de teclado ALT + F11

Una vez realizado cualquiera de estos dos pasos, aparecerá la ventana del editor de Visual Basic en la que ya puedes comenzar a trabajar.

Lo primero que verás será una ventana con una gran área gris y a la izquierda verás dos paneles:

Macro en Excel

El panel ‘Proyecto’

En este panel se muestran todos los proyectos abiertos al momento. En mi caso, como solo tengo un proyecto abierto, se muestra únicamente el proyecto ‘Libro1’.

Macro en Excel

Cada proyecto representa a un libro de Excel y agrupa varios objetos. Los dos objetos que siempre estarán presentes son el libro que se representa con el nombre ‘ThisWorkbook’  y la hoja cuyo nombre aparece entre paréntesis. En mi caso tengo tres hojas de trabajo representadas por los nombres ‘Hoja1’, ‘Hoja2’ y ‘Hoja3’.

El panel ‘Propiedades’

Este panel muestra las propiedades del objeto seleccionado.  Como ves, si yo cambio el objeto seleccionado, cambian las propiedades ya que un libro y una hoja tienen características distintas.

Macro en Excel

Escribiendo el código

Para poder comenzar a escribir el código, debes elegir un objeto en el cual incrustarás tu macro. Para el ejemplo elegiré el objeto ‘Hoja1’ y haré un doble clic sobre él.

Aparece a la derecha un área en blanco en la que debes escribir el código de tu macro.

Macro en Excel

Aquí vas a escribir la palabra ‘Sub’ que sería algo así como la abreviatura de la palabra Sub-rutina o Sub-proceso.

Macro en Excel

A continuación de la palabra ‘Sub’ vas a escribir el nombre de la sub-rutina. Esta no debe de tener espacios y debe comenzar por una letra.

En mi caso le pondré el nombre ‘MiMacro’.

Macro en Excel

Si presionas la tecla ‘Enter’ el compilador le pondrá automáticamente los paréntesis (esto es obligatorio) y al final pondrá el texto ‘End Sub’.

Macro en Excel

Esto le sirve al compilador para delimitar el alcance del código de mi macro y saber donde comienza y dónde termina este. Es decir, que tienes que escribir tu código entre estas dos líneas que acabas de crear.

Ahora bien, la tarea que nos propusimos era la de mostrar un texto en la celda B2 ¿recuerdas?

Para hacer esto, vas a escribir el siguiente código:

Nota

Código VBA Range(“B2”).Value = “Mi primera macro.”

Explicación del código

Con este código que acabo de escribir, le estoy indicando a Excel que el valor (Value) del rango B2 (range(“B2”)) debe ser el texto entre comillas (Mi primera macro).

Macro en Excel

Cuando se ejecute este fragmento de código, Excel mostrará el texto ‘Mi primera macro’ en la celda B2 que dejamos resaltada en color amarillo al iniciar con este ejemplo.

Ahora regresa a tu hoja de Excel y dirígete nuevamente a la ficha ‘Programador’ y en el grupo ‘Código’ pincha sobre el botón ‘Macros’.

Macro en Excel

Se mostrará un cuadro de diálogo en el que se listarán todas las macros existentes en los libros abiertos. Como no tengo creada más que una macro, solo aparece la macro titulada ‘MiMacro’.

Macro en Excel

Si  la seleccionas y pinchas en el botón ‘Ejecutar’, aparecerá el texto que le hemos indicado en el código y aunque podemos borrar este texto, solo es necesario ejecutar nuevamente la macro y aparecerá nuevamente.

Macro en Excel

Un paso más allá.

Si quisieras podrías reemplazar el texto que has usado en este ejemplo por algo un poco más ‘Dinámico’, por ejemplo podrías, en lugar de mostrar un texto fijo, mostrar la fecha y hora actual.

Esto se consigue con la función predefinida ‘Now()’.

Nota

Ten en cuenta que: A pesar de que utilices la versión de Excel en español, todas las propiedades, funciones predefinidas y funciones nativas de Excel, se usarán en inglés. Es bueno que lo vayas sabiendo desde ahora.

Como sabes, ‘Now’ significa ‘ahora’ y como función devuelve la fecha y la hora que tiene el sistema en el momento en que se ejecuta.

Lo que debes hacer en tu código, es reemplazar el texto ‘Mi primera macro’ por la función Now(), así:

Macro en Excel

Regresa nuevamente a tu hoja de Excel y ejecuta tu macro una vez más. Verás que aparece la fecha y la hora en la celda elegida.

Macro en Excel

¿Y por qué sub-rutina?

Pues porque cada uno de estos fragmentos de código tendrá asignada una sub-tarea que trabajando en conjunto con todos los demás, podrán resolver el problema planteado.

Esto viene del paradigma de programación[highlight] ‘Divide una tarea grande en varias tareas pequeñas’.[/highlight]

Eso es todo por hoy.

Este es un ejemplo sencillo de cómo realizar una macro en Excel que servirá para que en las siguientes lecciones el proceso te sea más natural.

Como siempre, si tienes alguna duda sobre la lección de hoy o algo no ha quedado cubierto, te invito a que me dejes tus comentarios para que podamos seguir nuestra conversación.

Sigue practicando que ya vamos entrando en materia con esto de las macros 🙂

¡Nos vemos!

Nota

¿Quieres saber más? Ir al curso de macros de Excel. Ver el vídeo directamente en Youtube. http://www.youtube.com/watch?v=Q4JJhDKCr_o

#04 Cómo mostrar la ficha Programador [Vídeo]

Ficha Programador

Si vas a comenzar a trabajar con las macros en Excel, necesitarás tener activa la ficha Programador en la cinta de opciones. En este vídeo te muestro cómo hacerlo en 30 segundos.

[twitter style=”vertical” source=”RaymundoYcaza” hashtag=”#Excel” float=”left” lang=”es” use_post_url=”true”] Esta ficha contiene varias herramientas que te permitirán trabajar con controles avanzados que necesitarás, si es que estás realizando planillas que requieren interactuar con el usuario, más allá de escribir datos en las celdas.

Mostrar la Ficha Programador en Excel.

  1. Pincha en la pestaña ‘Archivo’ que está al principio de la cinta de opciones (es la de color verde).
    Ficha Programador
  2. En el panel lateral que aparece, pincha sobre el apartado ‘Opciones’.
    Ficha Programador
  3. Verás que se abre una ventana con varias opciones. En esta ventana, debes seleccionar la opción ‘Personalizar cinta de opciones’.
    Ficha Programador
  4. Verás otras opciones ahora. En el panel de la derecha podrás encontrar varias casillas de verificación. Debes activar la casilla ‘Programador’ para que aparezca la pestaña del mismo nombre en la cinta de opciones.
    Ficha Programador
  5. Finalmente, pincha en el botón ‘Aceptar’ y ahora podrás ver la pestaña ‘Programador’ con las nuevas opciones que te serán necesarias en las próximas lecciones sobre macros.
    Ficha Programador

La Ficha Programador y sus nuevas opciones.

Esta ficha te mostrará nuevas opciones para trabajar con formularios y complementos, que te ayudarán a crear aplicaciones con tus hojas de cálculo.

El grupo código muestra el botón ‘Visual Basic’ y al pincharlo, te permitirá acceder al editor de Visual Basic, para escribir tus programas directamente.

En este mismo grupo puedes ver el botón ‘Grabar macro’, el mismo que te permitirá grabar todas las acciones que realices en Excel, para luego repetirlas como si se tratara de un vídeo que reproduces una y otra vez.

¡Hazlo ya!

Practica los cinco pasos que te indiqué y activa la Ficha Programador en tu Excel para que puedas seguir con las prácticas en el curso de macros. Si tienes alguna duda, déjamela en los comentarios.

No te olvides de compartir esta entrada, usando los iconos de las redes sociales que están más abajo. Elige tu favorita.

¡Nos vemos!

Efecto MouseOver en Excel: ¿es posible?

Efecto Mouseover en Excel

¿No te ha pasado que en varias ocasiones has considerado la idea de utilizar un efecto MouseOver en Excel para tus aplicaciones?

Seguramente sí. El problema es que cuando te pones a buscar en los eventos de VBA, no encuentras algo así para poder usarlo con una celda.

¡Pero sí es posible lograrlo! Hoy voy a mostrarte cómo podrías implementar un ‘evento MouseOver’ en tus desarrollos en Excel. ¡Esto va a ayudarte a sorprender a tu jefe!

Efecto MouseOver en Excel, en 5 pasos

Vamos a hacer este efecto paso a paso y con paciencia. Te darás cuenta que en realidad es muy sencillo de lograr.

Para el ejemplo he decidio realizar un recuadro sencillo con tres “solapas”, que detectarán cuando el puntero del ratón pase encima de ellas y cambiarán el valor mostrado en el recuadro.

01 Definiendo el área del cuadro.

Aquí seleccionarás el área que contendrá a tu recuadro con sus tres solapas. El área que seleccioné yo es: F2:H20

Efecto MouseOver en Excel
Seleccionando el área para nuestro recuadro.

Le pondrás bordes, la rellenarás de un color gris y poco más, a tu gusto.

02 Ingresando unos cuantos datos.

Ahora vas a ingresar unos cuántos datos en tu recuadro para darle forma. Yo he decidido ponerle el texto Opción 1, Opción 2 y Opción 3 en cada columna.

Debajo de estas etiquetas, en la siguiente fila, he colocado unos iconos especiales que puedes obtener simplemente escribiendo el número 6 y cambiando la fuente a Webdings.

Adicionalmente, el rango F4:H20 lo he combinado y en él he escrito la  frase ‘Hola Ecuador’ como prueba.

Efecto MouseOver en Excel
El recuadro listo. Ya lo has formateado y definido dónde irán las solapas.

03 Defines un nombre

Ahoras vas a definir un nombre en la celda B2. Este servirá para almacenar el resultado de la selección actual, para que sepas cuál es la solapa activa. En mi caso, lo he llamado ‘seleccion

Efecto MouseOver en Excel
Nombras la celda B2 como ‘seleccion’

04 Creas una pequeña macro.

Ahora deberás de crear una sola función que tendrá una línea. No suena tan complicado, ¿verdad?

Public Function MiEvento(rngCelda As Range)Range(“seleccion”).Value = rngCelda.ValueEnd Sub

No olvides crearla en un módulo aparte, para ser ordenados.

La función recibe como parámetro un rango, que será una celda (esto lo veremos en el siguiente paso).

El objetivo de la función, será poner en la celda que nombramos como ‘seleccion’, el valor de la celda que le hemos pasado por parámetro. Así, cada vez que ejecutemos esta función, el valor de la celda ‘seleccion’ se actualizará.

05 El secreto: Usa hipervínculos.

¿Recuerdas las celdas donde pusimos los iconos en forma de flechas apuntando hacia abajo? Pues ahora en lugar de escribir en ellas el número 6, colocaremos la siguiente fórmula:

Efecto MouseOver en Excel
Usando la fórmula Hipervínculo, para simular el efecto MouseOver.

Explicación:

La fórmula HYPERLINK() la utilizamos para convertir el contenido de la celda en un enlace (como los de una página web); pero en lugar de pasarle una dirección como parámetro, le pasamos el nombre de nuestra función MiEvento() definida en el código VBA.

A esta función le debemos pasar como parámetro la celda que tiene el nombre de nuestra solapa, es decir, la que se encuentra en la línea superior. Para el ejemplo, usamos la F2

Al no ser una dirección válida, nuestra fórmula nos dará un error. Aquí es donde entra al rescate la función IFERROR()

La función ISERROR()va a evaluar el contenido de la fórmula HYPERLINK(), si devuelve un error, entonces mostrará el valor que le pasemos como segundo parámetro, en este caso, el 6; de manera que se muestre el mismo caracter que teníamos al principio.

Recuerda copiar la fórmula a las tres celdas que figuran como nuestras solapas.

06 Un retoque en el formato.

Hasta aquí, ya has logrado el efecto MouseOver en Excel. Si pasas el puntero del ratón sobre los iconos, notarás que la celda B2 (que nombramos como ‘seleccion’) cambia su valor por el de la etiqueta activa.

Sin embargo, tenemos un pequeño inconveniente aquí: para que se active el evento, debemos pasar el puntero del ratón exactamente sobre el icono. Sería mucho mejor si el evento se disparara con solo pasar el puntero sobre la celda. Eso lo podemos conseguir ajustando la alineación de la celda a Wrap Text (Ajuste de Texto).

Efecto MouseOver en Excel
Activas el ajuste de texto para que toda la celda se considere como un hipervínculo.

En la celda F4, vas a colocar la fórmula =seleccion. Con esto simulamos el cambio en el panel central cada vez que pasemos el puntero del ratón sobre una solapa.

Una última mejora que haremos en nuestro archivo será resaltar con otro color la solapa activa. Para esto selecciona las tres solapas con sus respectivos iconos y utiliza el Formato Condicional, tal y como te muestro en la imagen:

Efecto MouseOver en Excel
Utiliza el formato condicional para dar un efecto de animación a tus solapas.

Nota:

Debes utilizar el ancla delante del número de línea para que la fórmula no se ‘desplace’ hacia abajo. Lo que nos interesa es comparar el valor de la línea 2 contra el valor de la celda ‘seleccion’.

El ejemplo en acción

Aquí puedes ver el ejemplo funcionando tal cual nos propusimos. Imagínate los usos que le podrías dar a esta técnica en tus modelos.

Efecto MouseOver en Excel
El ejemplo funcionando.

Descarga el archivo terminado

Sólo pincha en cualquiera de los botones siguientes y descárgate el archivo para que puedas jugar con él y consultar cualquier duda que puedas tener con el funcionamiento de la hoja. En realidad no es tan complicado 😉

 

Pincha aquí para descargar el archivo terminado.

 

¿Y tú, qué opinas de esta técnica?

A mi me gusta esta técnica porque me permite extender las posibilidades de diseño para mis modelos en Excel. Y tú, ¿qué opinas? ¿Te ha gustado el truco? Me gustaría saber tu opinión.

No olvides ayudarme a difundir este artículo en las redes sociales. ¡Gracias!

¿Te gustaría crear un botón flotante en Excel?

Foto cortesía de: jimbl

Cuando trabajas sobre una hoja con varios cientos o miles de registros, se te presenta la molestia de no saber dónde colocar el botón que ejecute la macro que has desarrollado. ¿No es verdad?

Tarea un poco difícil, porque el usuario siempre se va a estar moviendo en todas direcciones, sobre todo hacia abajo, donde nuestro botón sale del campo visual. Sería Excelente poder crear un botón flotante para nuestra macro; pero ya sea porque quieres hacerlo diferente, o porque no quieres que el usuario cierre accidentalmente la ventanita con el botón, te voy a mostrar cómo hacerlo con una autoforma.

Botón Flotante en Excel

Primero vas a crear tu botón con una autoforma, a tu gusto. Esta es una de las ventajas de hacerlo así, porque puedes darle la forma y el color que quieras a tu botón. El mío me quedó así:

Boton Flotante

No olvides darle un nombre al botón. Yo le puse “btnEjecutar”

Boton Flotante

Ahora, vas a crear una macro dentro de la hoja en la que dibujaste el botón. Esto debido a que debemos controlar el evento Worksheet_SelectionChange que se dispara cada vez que el usuario cambia la selección.

Este sería el código a utilizar:

Botón Flotante

 

En este código, le estamos indicando a Excel que cada vez que nos movamos por la hoja, calcule la posición de la celda y se la asigne a la autoforma que tiene por nombre “btnEjecutar”.

  1.  Con el atributo .Left de nuestro botón, le estamos indicando que la distancia desde la izquierda de la pantalla, sea igual a la distancia que tiene la celda que está a la derecha de la celda activa.
  2. Con el atributo .Top de nuestro botón, estamos asignándole la misma distancia que tiene la celda activa desde la parte superior de la pantalla.
  3. El atributo .Height es simplemente para que siempre se adapte al alto de la celda activa. Puedes quitarle esta línea si tienes una planilla con muchas filas de diferente altura.

El botón flotante En acción

En esta imagen puedes ver a nuestro simpático botón moviéndose por toda la hoja cada vez que cambiamos la celda activa. No importa hacia dónde nos movamos, nos seguirá “como un perrito fiel”

Botón flotante en Excel

 

Consejos adicionales para que modifiques el código

Si no quieres que el botón flotante se mueva de columna, puedes eliminar la siguiente línea:

.Left = Cells(fila, columna + 1).Left

Por el contrario, si quisieras que tu botón no se mueva de fila, pero sí de columna, puedes eliminar la siguiente línea:

.Top = ActiveCell.Top

Si tu hoja tiene muchas filas con altura diferente entre si, puedes eliminar la siguiente línea:

.Height = ActiveCell.Height

El ejemplo terminado

Aquí te dejo el ejemplo terminado en un libro de Excel habilitado para macros. Solo haz clic en el botón y sigue las instrucciones. ¡Es Gratis!

No te olvides de permitir la ejecución de macros al abrirlo, para que funcione el código.

Eso es todo por hoy. Espero que le saques provecho a este ejemplo y lo apliques en tus proyectos.

¡Nos vemos!

Raymundo