Tipos de variables en VBA

Curso de VBA para Excel

Este curso de VBA para Excel es totalmente gratuito y está compuesto por una serie de breves artículos que te permitirán lanzarte desde cero al mundo de la programación en VBA. Mi recomendación personal es que le dediques un poco de tiempo a esto (creo que en 3 horas lo habrás leído todo) para sentar las bases de la programación en VBA para Excel.
El curso de VBA para Excel seguirá creciendo a medida que vayamos añadiendo artículos sobre este tema. Esperamos que te sea de gran utilidad.

LECCIÓN 1: PRINCIPIOS BÁSICOS

Aprende a manejarte rápidamente con las herramientas de VBA para Excel y entiende los conceptos básicos de este curso de VBA para Excel.
  1. Principios de VBA

    Mucha gente me dice que quiere aprender de VBA pero que no sabe por donde empezar y que le fallan los rudimentos. Básicamente la pregunta de todo el mundo es, ¿qué es VBA?.
    Bien, VBA no es difícil ni mucho menos. Puedes aprender como yo sin tener ni idea de programación. Lo único que hay que hacer es entender su lógica. Y una vez que la entiendes e interiorizas ya puedes dominar Excel.
    qué es vba
    Esta lógica de VBA es básicamente: “El programa hará exactamente lo que le digas que haga”. Esto significa que o escribes el código exactamente de lo que quieres que haga o, sino, no conseguirás nunca más que parchecitos. Esto no implica que no se puedan tener árboles de decisión (hacer esto o hacer lo otro). Claro que se puedes, simplemente tienes que indicar cuando se debe hacer “esto” y cuando “lo otro”, y a eso se le llama lógica

     OBJETOS

    En VBA orientado a Excel nos encontramos con una jerarquía de objetos que es la siguiente:
    1. Application
    2. Workbook
    3. Worksheet
    4. Range
    5. Cell
    6. otros
    Cada uno de estos elementos son llamados objetos y cada objeto tiene sus propiedades. Como es lógico, los más utilizados son Worksheet, Range y Cell.
    Algunas de las propiedades del objeto Worksheet son:
    • Name
    • Select
    • Activate
    • Count
    • Add
    • Delete
    • Y, en general, cualquiera que habitualmente se utilice en Excel…

    STATEMENTS

    Para interactuar entre estos objetos y realizar operaciones con ellos podemos encontrar una serie de “condicionales lógicos” llamados statements que conviene conocer. Algunos de estos statements son:
    1. IF …. Then… Elseif… End if
    Este primer caso se trata de un statement de tipo condicional. Dada cierta condición, si se cumple, se sigue ejecutando, sino, saltará hasta el final de dicha parte condicionada.
    1. For… Next
    En este caso tenemos un statement de tipo loop, es decir, bucle. Repetirá la acción que queramos tantas veces como le indiquemos.
    1. Do While
    Este statement también es del tipo loop combinado con un condicional. En este caso repetirá la acción indicada mientras se cumpla una cierta condición.
    La combinación de objetos con propiedas y statements es el conjunto de las operaciones básicas de Visual Basic Applications.
    La dificultad de la programación en VBA estriba
    en conocer todas las propiedades (que en el fondo son las normales de cada objeto de Excel) y su nomenclatura.

Panel de Control de VBA

Aún recuerdo la primera vez que abrí el editor de VBA, nadie me había explicado y empecé a descubrir qué era todo aquello. Tiene una apariencia común, muy parecida a todos los programas de office, con alguna diferencia mínima.
La barra de arriba (ribon) no es tan cómoda como en versiones superiores de Office. Existe una ventana principal y dos ventanas secundarias más o menos organizadas así: a la izquierda encontraremos el menú de VBA Project y debajo el de Properties. A la derecha, una ventana mucho más grande es donde editaremos el código. A esta ventana se le llama Editor.
En esta pantalla vemos las cuatro secciones que hemos descrito del panel de control de VBA:
  • Barra de menús y herramientas.
  • Project explorer
  • Properties
  • Code dashboard
A continuación una breve descripción de lo que tenéis en cada una para la versión de Excel 2010 con la versión 7.0 de Visual Basic for Applications.
Barra de menús y herramientas
La siguiente imagen muestra lo fundamental de VBA. Tranquilo, yo llevo años con esto y todavía no se para qué sirve todo, es una cuestión de seguir investigando.
Main Menu panel de control de vba
Como puedes ver, el primer menú se parece mucho al de otros programas y por eso no voy a detenerme en todas las pestañas, sólo en aquellas opciones que considere más interesante de manera que puedes aprender a mover rápidamente por esta pantalla.

EDIT

El menú Edición / Edit es especialmente interesante porque contiene los comandos más habituales y de los que conviene aprenderse los atajos del teclado. En este caso serían Indent, Outdent y Complete Word.
Menú Edición Edit VBA

DEBUG

Este es otro de los menús claves que tenemos en VBA y que se utilizan mucho, muchísimo, y conviene que entiendas muy bien desde el principio.
Debugger Debug menu
Tanto step into, como step over o stept out se usan muchísimo para ir revisando el código de VBA. Un poco más adelante verás por qué vas a necesitar revisar el código de vez en cuando.
Lo más práctico que se puede hacer, desde mi punto de vista, es sacarse  estas dos barras directamente y no tener que acceder como se ve en la foto. El ejemplo es la primera foto, donde podemos ver dos líneas y en la segunda línea dos grupos de iconos.
Para añadir estos icones haz click con el botón derecho sobre algún hueco vació de la barra de herramientas. De las opciones que salen te recomiendo que marques las  siguientes:
  • Estándar
  • Edición
  • UserForm

Qué es un módulo de VBA?

¿Realmente es importante saber qué es un módulo? La respuesta es no. Pero es muy útil saber cómo se puede organizar la información dentro de VBA. Pero, ¿por qué es útil?. A la hora de hacer un pequeño programa en Excel con unas cuantas Macros puede ser bueno organizar la información en diferentes módulos.

¿QUÉ ES UN MÓDULO?

Un módulo es dónde se escribe el código en VBA. Un proyecto de VBA es un conjunto de módulos (o uno sólo) dónde se escriben las diferentes macros y funciones de VBA. Los módulos nos permiten organizar el código de VBA en diferentes archivos dentro de VBA de manera rápida, fácil e intuitiva.

¿CÓMO ACCEDER A UN MÓDULO DE VBA?

Para acceder a un módulo de VBA primero habrá que acceder al proyecto y después elegir el módulo que se quiere editar.
Para acceder al editor de VBA puedes hacer click en Alt + F11 y accederás a una pantalla como la siguiente.
VBA módulos
En esta pantalla, si hubiera más de un proyecto veríamos un listado a la izquierda de los posibles VBAProjects a elegir. Seleccionando uno de ellos podríamos ver después la carpeta módulo y haciendo click sobre uno de ellos entraríamos a ver el código del módulo seleccionado.

EJEMPLO DE MÓDULO DE VBA

Pongamos un ejemplo. Tenemos pensado hacer unas cuantas macros para un programita que estamos creando. Podrían ser la siguientes:
  • 1.Abrir un documento
  • 2.Limpiar cierta información
  • 3.Pegar información de una parte del documento a otra.
  • 4.Crear una nueva hoja con cierta información.
  • 5.Aplicar formato a la nueva hoja creada.
  • 6.Eliminar la información copiada.
  • 7.Eliminar la hoja que hemos creado.
Como vemos en el listado anterior, tenemos información de 2 o 3 tipos diferentes relacionadas con la actividad de nuestra hoja de Excel. Las macros de la 1 a la 3 pueden ser la de cargar datos. Las macros 4 y 5 serían de operar con la nueva información. Las macros 6 y 7 son las de dejar la hoja en su estado inicial.
Para mi en este caso sería útil tener 3 módulos (especie de carpetas donde se guarda la información.
Los módulos yo los organizaría de la siguiente manera:
  • 1.CARGAR
  • 2.OPERATIVA
  • 3.RESETEO
Este es un ejemplo pero depende de la cantidad de macros y la operativa que usemos pueden ser más o menos módulos.

Crear un módulo en VBA

Como ya hemos visto en el artículo “¿Qué es un módulo?” la necesidad de crear un módulo en VBA puede surgir cuando estemos creando el código de nuestro programa de VBA. Esta creación de módulos nos permitirá organizar más fácilmente nuestro código y dividirlo en diferentes elementos funcionales paro no crear listas “infinitas” de macros que llaman unas a otras.

¿CÓMO CREAR UN MÓDULO EN VBA?

El ejemplo que hemos visto anteriormente es la manera más sencilla que hay de crear un módulo pero si lo que realmente quieres hacer es crear un módulo desde cero puedes hacer lo siguiente:
1.En la esquina superior derecha hacer click en el desplegable del segundo icono.
Crear módulo desde cero
2.En el desplegable que aparece hacer click en el segundo de los iconos
Nuevo módulo
3.Al hacer click aparecerá un nuevo módulo en blanco en el que ya podremos escribir nuestro código desde cero.
De esta manera podremos crear tantos módulos cómo queramos pero los módulos siempre estarán vacíos.
Otra manera muy interesante de agregar módulos a nuestro proyecto de VBA es traiéndolos de otros libros de Excel, es decir, de otros proyectos de VBA.
Para ello no hay más que abrir los dos libros de Excel, abrir el editor de VBA yseleccionar el módulo que queremos copiar del proyecto origen al proyecto destino y arrastrarlo hasta el proyecto de VBA en el que queremos copiarlo. En la siguiente imagen podemos ver cómo el Module1 que está en el proyecto de abajo está siendo movido al proyecto de VBA de arriba.
arrastrar un módulo de VBA

¿Qué es una macro en Excel?

Casi todo el mundo tiene una pequeña noción de qué es una macro pero casi nadie que no se haya iniciado un poco en Excel conoce la potencialidad de VBA.
Una vez me dijo un amigo que aprendió VBA porque se negaba a volver a hacer tareas repetitivas. Tengo que decir que no es mi caso pero que desde entonces yo también he seguido esa filosofía.
Una macro es un pedacito de código programado en VBA, el lenguaje de programación de Microsoft. Pues vaya, menuda definición estarás pensando. Venga, ahí va otra pequeña descripción. Una macro en Excel es la automatización de una tarea sencilla o compleja en Excel.
qué es una macro en Excel
Quizás todavía no te ha quedado muy claro y como todo se entiende mejor con un ejemplo te contaré uno.
Una macro muy típica es aquella que nos permite copiar información de una hoja a otra de Excel a través de un botón para crear un registro (por ejemplo).
Básicamente, el pedacito de código previamente comentado puede ser cualquier operación que puedas hacer en Excel mediante botones (normalmente) u otros elementos. Aunque también puedes hacer que sean macros que “salten” automáticamente. Por ejemplo, cuando seleccionas una celda o cambia un valor de una fórmula. Cosas como cambiar formatos, eliminar columnas, añadir filas, crear fórmulas, pegar imágenes, ordenar datos, insertar datos… cualquier cosa.

¿QUÉ ES UNA MACRO EN EXCEL?

Como te decía, una macro es una operación que automatizamos en Excel y lo hacemos a través del editor de macros.
Este pedacito de código, en VBA siempre tiene la siguiente forma (manera de escribirse):
Macro Simple Qué es una macro de Excel
Entre el Sub y el End Sub es donde escribiremos nuestro código por ejemplo como en este caso:
Macro con comentario y Msgbox qué es una macro
En la imagen anterior vemos dos líneas en verde, son los comentarios que van precedidos, para que VBA los entienda como tales, de una comilla simple.
En negro está escrita una línea de código que hará saltar el mensaje  <<Subscríbete a este blog, es gratis.>> cada vez que se ejecute una macro.
Para ejecutar la macro presionamos la tecla F5 de nuestro teclado mientras el cursor está situado en alguna línea de la macro. El resultado será el siguiente:
Ejecutar Macro
Esto, por ejemplo, nos podría dar otro tipo de mensaje que fuera útil al usuario del programa Excel que hemos creado, o a nosotros mismos.

UN POCO DE TEORÍA SOBRE MACROS EN EXCEL

Merece la pena conocer el atributo Public/Private de una Subrutina (macro). Antes de la palabra Sub de nuestra macro podemos poner la palabra Public o Private aunque, por defecto, VBA entiende que toda macro es del tipo Public con lo que ello conlleva y que te explicaré a continuación.
La definición de cada una de ellas sería:
Public: puede accederse a ella desde otro módulo y es visible desde la ventana de Desarrollador.
Private: es una macro que no puede llamarse desde otro módulo y tampoco desde la ventana de desarrollador.
Normalmente añadiremos el atributo Private cuando tengamos muchas macros y no nos apoyemos en algunas para ejecutar nuestro módulo pero que no son necesarias que sean visibles.

¿QUÉ COSAS PUEDO HACER CON UNA MACRO EN EXCEL?

En Excel podemos hacer macros para casi todo lo que se nos ocurra. La mayoría de las personas crean una macro en Excel para automatizar algunas tareas sencillas (o complejas) aunque su potencia es mucho mayor. Algunos ejemplos que puedes ver en esta web son:

¿CÓMO APRENDO A CREAR MACROS?

Si has llegado hasta aquí es que estás verdaderamente interesado en aprender a crear macros en Excel. Me parece una decisión acertadísima porque puede ahorrarte miles de horas de trabajo como me las ha ahorrado a mi y a muchas personas.

APRENDER MACROS DE EXCEL SIN SABER PROGRAMACIÓN

Antes de nada he de decirte que aprender a crear tus propias macros en Excel es un poco desquiciante al principio, lo digo por experiencia propia. Ahora bien, no importa que no sepas de programación. Yo no sabía de programación y ahora se programar macros en Excel sin dificultad. Para ello, dediqué muchas horas a probar cosas que se me ocurrían, a automatizar todas las tareas que pasaban por mis manos y a quedarme muchas horas sin dormir.
Para aprender a programar macros  sin saber de programación deberás:
  • Tener paciencia
  • Empezar por tareas sencillas (ya conseguirás hacer las difíciles)
  • Dominar Excel o, al menos, tener un conocimiento muy bueno de la herramienta.

APRENDER A CREAR MACROS EN EXCEL DESDE CERO

Para aprende a crear macros en Excel desde cero no hay nada cómo seguir un buen curso de Excel gratuito. Hay miles de cursos en Internet pero yo recomiendo el que hemos elaborado nosotros. No es un curso nada complejo y puedes aprender sin tener ni idea de qué es una macro en Excel. Está pensado para gente como tú que quiere iniciarse en Excel así que ya sabes… toca remangarse y empezar a leer nuestros tutoriales para aprender a programar macros en Excel desde cero.
Te recomiendo que empieces ya. Estoy seguro de que en pocos días te manejarás con las macros y que en no mucho tiempo, dependiendo de los ratos que le dediques, podrás convertirte en un verdadero experto de las macros de Excel.

Comentarios

Entradas más populares de este blog

Sentencia IF en Python

Practica Sentencia SI