
Bienvenidos a mi nuevo curso de Macros y Programación en VBA de Excel, en el que aprenderemos a explotar de manera avanzada la funcionalidad de un software tan común como Microsoft Excel. Estaremos en capacidad de crear lo que se nos antoje, una vez finalicemos nuestro curso.
En este video, colocaremos algunas reglas de juego con relación a lo que será nuestro completo curso de Excel VBA, que lenguaje trabajaremos, que deberemos tener en cuenta y sobretodo, darte la bienvenida oficial a la automatización de procesos.
Comencemos con el poder de la grabadora de macros, habilitar la pestaña "PROGRAMADOR" o "DESARROLLADOR". Excel ayudará a escribir código por nosotros y grabar ciertos pasos que sabremos qué usaremos en el futuro.
Se hace necesario en algunos momentos, que nuestras macros seleccionen siempre algunas celdas de nuestra hoja y en ellas escriban o ejecuten ciertas instrucciones, sin embargo, a veces es lo que queremos es que no tome siempre las mismas celdas, sino que ejecute nuestra macro a partir de lo que seleccionemos.
Moverse entre los un determinado rango con la funcionalidad estándar de Excel es muy sencillo, pero vamos a tratar de hacerlo a partir de una macro.
En ocasiones con una macro de múltiples instrucciones logramos lograr lo que buscamos, pero esto puede volverse una molestia si nos genera demasiados errores. Es por eso que aquí aprenderemos a ejecutar una macro a partir de otra macro.
La funcionalidad normal de Excel que nos permite importar datos desde archivos externos, pero es ejecutado a partir de un macro grabada con la grabadora de macros.
Comenzamos con un avance de lo que es el Código de VBA, de esto hablaremos mucho a lo largo del curso. Código, Código y más Código VBA de manera práctica y lo mas sencilla posible.
Este ejercicio será muy sencillo pero bastante útil, por que a partir de el desarrollaremos las explicaciones correspondientes a cada línea de código y que se refiere. Así que presta atención a nuestro CÓDIGO BASE.
Para organizar de manera óptima nuestro código de programación, es necesario poderlo dividir (encapsular) de una manera eficiente. Los módulos ayudan demasiado en esta tarea.
A veces queremos compartir el código que escribimos con el resto del mundo, es por esto que el editor VBA nos permite Importar y Exportar dichos módulos.
Los procedimientos, son una de las mejores maneras de poder encapsular nuestro código, además de eso, nos permiten tener pequeñas porciones de código (como macros independientes) que nos ayudarán a ejecutarlas en el momento en que queramos e identificarlas con nombres descriptivos según lo que haga nuestro código.
Si nuestro libro de Excel no quiere ejecutar un determinado macro o secuencia de macros, puede ser a que no se han habilitado las macros dentro de nuestro libro de Excel.
Cada vez que ejecutamos un programa, éste ocupa una cantidad de memoria determinada y una parte de esa memoria ocupada dependerá de las variables en nuestro lenguaje de programación. Las variables nos ayudan a decirle al sistema "ven, aparta x cantidad de memoria para mi".
Cuando DEFINIMOS una variable, apartamos una cantidad de memora determinada para que se pueda ejecutar nuestro programa de manera "rápida".
Cuando asignamos valores a una variable es cuando ocupamos la cantidad de memoria solicitada al sistema, es por esto que se hace necesario saber definir nuestras variables de tal manera que si apartamos una cantidad determinada de memoria, se la cantidad de memoria que utilicemos. De esta manera nuestro código será mas óptimo y nuestro programa correrá mucho mas rápido.
Este tipo de variable nos permitirá almacenar cadenas de texto, que por lo general van incluidas dentro de comillas dobles ("").
En VBA existen múltiples tipos de variables, dentro de ellas, hay un grupo importante que nos permite almacenar números: Enteros, pequeños o números grandes o con decimales, saber identificar que variable debemos usar en cada caso, ayudará a escribir un mejor código.
Es un tipo de variable especializado para almacenar fechas y no ocupa tanto espacio en memoria. Definir este tipo de variable, nos dará la posibilidad de poder trabajar mucho más fácilmente con cálculos relacionados con fechas en secciones futuras.
En programación hay un tipo de variable que nos permitirá almacenar valores verdaderos o falsos nada más. las denominamos variables booleanas.
No es muy recomendado usar este tipo de variable debido a la gran cantidad de memoria que utiliza, sin embargo, es necesaria en algunos casos, por lo que la abordaremos en este video.
Hay "variables" que nunca cambian su valor al momento en que se ejecuta el programa, en ese caso podríamos darle un tratamiento de constante (por lo que su valor siempre se mantiene igual). sin embargo, debemos indicarselo a VBA y para eso debemos una nueva instrucción en nuestro código de programación.
Si somos desordenados con nuestro código fuente, nuestro programa no será lo suficientemente rápido y óptimo, por esta razón, Option Explicit nos obligará a que siempre que vayamos a ejecutar un programa, tengamos que "DEFINIR" nuestras variables.
Muchas veces escribimos programas que de momento nos parecen muy claros, pero con el paso del tiempo, se nos olvida exactamente que hace un determinado trozo de código o procedimiento; u otra persona que sepa de VBA va a querer saber de nuestro código y se va a perder. Para esto y otras cosas mas podemos usar los comentarios, para impedir que algunas líneas de código se ejecuten o para insertar textos aclaratorios a la funcionalidad de un determinado script
Espero les haya sido de utilidad esta sección, nos disponemos a seguir trabajando con más código y a seguir desenmarañando nuestro CODIGO BASE. Felicidades!!!... vas super!
Los Objetos es un tema que se aborda en múltiples lenguajes de programación y VBA no es la Excepción, aunque no es un lenguaje propiamente orientado a Objetos si que los manejamos y aquí intentaremos dar una breve aproximación. "TODO SON OBJETOS EN EXCEL".
El "Objeto" Range hace referencia a cualquier celda o conjunto de celdas, siempre que veamos esta instrucción en VBA debemos entender que nos estamos refiriendo a las celdas de una determinada hoja.
Como explicamos anteriormente, los objetos, tienen acciones, acciones que se denominan en programación, Métodos, es con ellos podemos decirle a nuestro Objeto: "haga x cosa". Ademas de esto, los métodos, pueden recibir parámetros que pueden alterar su comportamiento. Muy similar a cuando pasamos parámetros a una función normal de Excel.
En VBA, tenemos la opción de pasar parámetros de una manera distinta. Pasando solo los parámetros que queremos ocupar y que además son indispensables para el funcionamiento de nuestra función, procedimiento o método.
Habíamos comentado que los objetos cuentan con ciertas "Características" que lo definen, a estas, las denominamos en programación Propiedades. Veamos cómo se comportan!.
Hay demasiados objetos en el mundo de VBA y EXCEL, sin embargo es claro que hay algunos que se usan todo el tiempo, es por eso que vamos a hablar de ellos en este video.
Excel VBA maneja cierta Jerarquía en los objetos esto es, que un objeto puede ser padre de otro objeto y a la vez hijo o abuelo de otro. Veámoslo en la práctica.
En ocasiones, es mucho mas cómodo "guardar" un objeto dentro de una variable y tratar esa variable como si fuera nuestro objeto. Bueno, eso es lo que nos permite nuestra instrucción Set. Es como decirle a programa "trate esta variable como si fuera = x objeto".
ThisWorkBook: Es uno de los objetos mas comunes y utilizados en VBA de excel y así como Range hace referencia a una o varias celdas, Thisworkbook se refiere a "este libro", es decir, al libro que estamos trabajando y en este video hablaremos de algunas de sus propiedades y sus métodos.
Aprendamos como seleccionar y navegar con las funcionalidades de VBA, ejecutando ciertas tareas comunes.
Objetos WorkSheet, WorkSheets, Sheets y otros, son muy comunes en nuestro código y hacen referencia a las Hojas de nuestro libro de Excel.
Insertar una celda con Excel o eliminarla es muy sencillo con el Mouse, sin embargo con código VBA, es muy sencillo también. así que vamos a hacerlo a puro código.
Un conjunto de celdas, un conjunto de hojas, un conjunto de libros, un conjunto de botones, etc, eso es una colección en Excel VBA. Vamos allá!
Movernos entre celdas con cierta complejidad es posible gracias a algunas instrucciones VBA. Por ejemplo si queremos colocar la función suma en algún lugar determinado a partir de la suma de una determinada columna. Este video nos ayudará a corregir un error que forzamos en uno de los videos de la GRABADORA DE MACROS. En donde, cuando se ejecuta dicha macro, no suma todas las celdas que queremos que sume.
Optimicemos nuestro código, encapsulemoslo, esta instrucción nos permite disminuir sustancialmente la escritura de código repetitivo, no mejora el rendimiento, pero si nos ayuda a escribir un código mucho mas limpio.
Espero hayas puesto mucha atención a esta sección, es uno de los temas pilares en la compresión de escritura de código VBA. si es así, FELICIDADES... estas listo para manipular no solo los objetos que vimos en esta sección, sino cualquier objeto, cualquier método y cualquier propiedad. El límite es tu imaginación... eres un PRO.
Esta es una función predefinida muy utilizada, sirve para mostrar mensajes a los usuarios que interactúan con nuestra aplicación. Alertas, info, danger, etc
Esta función nos permite hacerle preguntas al usuario y ademas de eso, el usuario, podrá ingresar algún dato que nos ayudará a continuar con la ejecución de nuestro código.
Funciona similar a la función InputBox normal, sin embargo, si la usamos cómo método, tiene mucha mas funcionalidad y validación.
Es super útil para imprimir datos en nuestra consola de depuración, siempre que escribamos código, es necesario utilizar esta instrucción. Veníamos utilizando la función Msgbox para imprimir en pantalla, pero para muchas tareas es mucho mas idóneo usar Debug
Este objeto nos permite usar prácticamente cualquier función de Excel pero desde VBA. ya tienes la teoría, ahora queda que uses tu imaginación.
Utilizando desde código VBA la función BuscarV de Excel.
Utilizando desde código VBA la función ContarA de Excel
En ocaciones necesitamos escribir en nuestras celdas una función de manera literal en una determinada celda. Aprendamos como hacerlo.
Funciona similar a la función SI de Excel pero desde VBA se llama IF. Y ejecuta ciertas instrucciones de código dependiendo de si una condición es verdadera o falsa.
Permite a la estructura de control IF anidar varias condiciones que deben cumplirse todas para que permita ejecutar la parte del código donde la condición es VERDADERA
Se combina con la estructura de control IF sin embargo, a diferencia de AND, con esta instrucción solo será necesario que una de las condiciones sea VERDADERA para que permita ejecutar el bloque de código.
Se combina con la estructura de control IF y permite decirle de muchas maneras como evalúe una determinada condición.
complemento de la estructura de control IF en donde si la condición es falsa, ejecuta el bloque de código que se encuentre dentro del ELSE. ELSE es como decir "sino se cumple lo que esta dentro del IF haga lo que esta dentro del ELSE"
En ocasiones no basta con una condición IF así que VBA y otros lenguajes de programación nos permiten anidar varias condiciones y en donde se cumpla, ejecutará ciertos bloques de código.
En muchos casos resulta mas limpio y claro usar Select Case en vez de un montón de IF ELSE. y su objetivo es el mismo. Ejecutar una determinada porción de código siempre y cuando se cumpla cierta condición.
Ejecute x líneas de código MIENTRAS se cumpla cierta condición.
Hágalo hasta que ya no se cumpla una determinada condición.
Nos permite combinar múltiples condiciones, según lo que queramos realizar. Pero ojo, hay que tener cuidado con estas estructuras de control repetitivas y en especial con el Do. es muy fácil caer en un bucle infinito que nos bloquee todo.
Nos permite ejecutar un determinado trozo de código x cantidad de veces, es mucho más controlado que los bucles Do.
Funciona igual que For Next pero al colocar la instrucción Step -1. No avanza hacia adelante, sino que va hacia atrás.
También nos permite repetir cierta cantidad de veces un determinado trozo de código, pero esta instrucción es ideal para trabajar con Colecciones, de celdas, de hojas, de libros etc.
Te Admiro!!!! si llegaste hasta aquí, ya puedes imaginar hasta donde puedes llegar gracias a las estructuras de control y este conocimiento te vale no solo para VBA sino para otros lenguajes de programación mas robustos.
¿No encuentras una función en Excel que te ayude con lo que tienes en mente?. Pues crea la tuya personalizada gracias a VBA. Y lo mejor es que la vas a poder usar en tus hojas como si fuera una función normal de Excel.
Muy similar a los parámetros pasados a los métodos, o a los procedimientos o a cualquier función de Excel.
En ocasiones queremos que el valor de una variable pase de manera literal a otro procedimiento y que al salir de el, salga con las modificaciones que experimento. Esto es el PASO POR REFERENCIA de las variables y a la inversa, es decir, que solo reciba el valor de la variable como tal independiente del nombre, cuando se pasa POR VALOR.
En algunas funciones deseamos que pida un valor obligatorio y otro u otros que solo los pida en determinados casos, para esto son los PARAMETROS OPCIONALES. Que en una función tienen un valor por defecto.
Ya esas listo para aumentar el Stack de las mas de 400 funciones predefinidas que trae Excel. Ya la magia esta en tus manos. EJECUTALA!!!
Básicamente es la manera de representar una tabla de Excel pero desde líneas de código.
Vamos a sacar los valores de la tabla y a registrarlos en nuestra hoja, a esto se le denomina RECORRER UN ARRAY. Es básicamente "sacar" los datos de dentro de la tabla.
Tras la ejecución de nuestro código en ocasiones necesitamos ampliar el tamaño de nuestra "TABLA" (ARRAY) y para eso usamos esta instrucción, Para agregarle o quitarle espacios a nuestro ARRAY.
Es una instrucción sencilla pero muy útil en combinación con Redim y permite indicar la cantidad de elementos que queremos que tenga nuestro ARRAY en su interior.
Profundidad de los ARRAYS, es como combinar varias tablas en una y a cada tabla interna la denominamos "DIMENSIÓN"
Pongamos en práctica lo aprendido en la sección y algunas anteriores. Mientras, déjame animarte a continuar. Por que este conocimiento te va a acompañar durante toda tu vida.
FORMULARIOSSS!!... me emociona mucho presentar esta sección. Nos permiten interactuar de manera gráfica con las personas que usen nuestro programa. Botones, cuadros de texto, listas desplegables y mucho más será lo que aprenderemos a utilizar en esta sección.
Un click, cuando se abre un formulario (Open), cuando se cierra (Close) y otros eventos nos ayudarán ejecutar un bloque de código o no según la interacción que tenga el usuario de nuestro sistema.
El FORMULARIO, habrás visto algunos libros de Excel que abren formularios personalizados con cierta funcionalidad especial, bueno, esto lo hacemos desde VBA. el FORMULARIO es el contenedor de todos nuestros demás "controles de formulario", es como el PADRE. y entenderlo será de vital importancia para implementar los demás items que lo integran.
Que eventos comunes puedes tener lugar cuando interactuamos con un formulario VBA
Un botón que ejecuta cierta funcionalidad en un formulario, es super común encontrarlo y el evento que mas usa es el Clic, es decir, "cuando haga clic el usuario, quiero que haga x cosa".
Nos permite organizar por secciones nuestro formulario, da mucho mas orden y se comporta como contenedor de nuestros demás "controles de formulario".
Es muy común, permite que el usuario ingrese texto o números que podremos manipular y gestionar gracias a nuestro código VBA.
Usualmente se usa para dar claridad a los demás controles de formulario, por ejemplo, si tengo un cuadro de texto voy a requerir colocarle un texto al lado o arriba que le permita al usuario saber para qué sirve o qué debe ingresar en ese campo de texto.
Una lista desplegable, así se representa este "control de formulario" y permite seleccionar un valor de esa lista desplegable. Por ejemplo una lista desplegable de países, una lista desplegable de ciudades, etc.
Muy similar al Combo Box, pero los valores se pueden ver ya desplegados en el formulario, además podemos tener la opción de seleccionar uno o varios valores de nuestra lista.
Permite seleccionar uno o varios valores con un pequeño cuadrito y un Check, como el que encuentras en algunas páginas web para "aceptar términos y condiciones".
Muy similar al MULTIPAGE, sin embargo este selecciona y oculta otros controles, es como tener mini directorios dentro de nuestro formulario.
Muy similar al Checkbox, Sin embargo, esta opción solo permite elegir una opción de varias. Por ejemplo: el Género de una persona. "Hombre ó Mujer".
En este curso aprenderás desde cero el manejo de la grabadora de macros, luego de esto, aprenderás a interpretar el código que genera la grabadora y por último estarás en capacidad de escribir tus propias lineas de código en el Editor de Visual Basic de Excel. Esto te ayudará a automatizar Excel de una manera inimaginable e incluso desarrollar aplicaciones complejas, desde un sistema de inventarios hasta un completo software completo de contabilidad. Yo te brindaré las herramientas suficientes, tu colocarás tu imaginación en la creación de un proyecto poderoso y personalizado de acuerdo a tus necesidades.
Si algunas vez imaginaste que un sistema podría hacer todo tu trabajo con TAN SOLO UN CLIC, este curso es para ti. Automatizar procesos es la especialidad que brinda combinar Excel con VBA.
EXCEL Y VBA EN MI VIDA:
Siempre me desempeñe en el área contable y facturación, pagos y nómina. Luego de combinar mis conocimientos en Excel y VBA logre automatizar mis tareas hasta el punto punto en que todos mis reportes, informes y tareas diarias quedaban listas con TAN SOLO UN CLICK. Esto me permitió contar con mucho mas tiempo para mi familia y estudio. EXCEL MEJORO SUSTANCIALMENTE MI CALIDAD DE VIDA.
Hacer que un sistema sea capaz de abrirse a una hora especifica del día, descargue archivos desde la web, genere reportes personalizados y adicionalmente imprima dichos reportes de manera automatizada y sin siquiera mover un solo dedo, esto es lo que nos permite Excel y VBA.
Tu también puedes mejorar tu calidad de vida y dejar de hacer todo tu trabajo o tareas diarias repetitivas de manera manual y hacer que Excel y Visual Basic lo hagan por ti.
Además de esto, las personas que aprenden a dominar las macros y VBA de Excel, estarán en capacidad de aprender otros lenguajes de programación de una manera mucho mas sencilla, por que muchos de los conceptos que utilizamos en este curso, aplican para otras tecnologías y lenguajes de programación como PHP, PYTHON, JAVA, JAVASCRIPT, ETC.