La mejor guía de VBA (para principiantes) necesitarás

La mejor guía de VBA (para principiantes) necesitarás

La plataforma de programación VBA que se ejecuta en casi todos los productos de Microsoft Office es una de las herramientas más poderosas que cualquiera puede usar para mejorar su uso de esos productos.

Esta guía VBA para principiantes le mostrará cómo agregar el menú de desarrollador a su aplicación de oficina, cómo ingresar la ventana del editor de VBA y cómo funcionan las declaraciones y bucles básicos de VBA para que pueda comenzar a usar VBA en Excel, Word, PowerPoint, Outlook y OneNote.

Tabla de contenido

    La lista de la izquierda incluye todos los comandos de menús y menú disponibles disponibles en esa aplicación de la oficina. La lista de la derecha son las que están actualmente disponibles o activadas.

    • Debería ver el desarrollador en la lista a la derecha, pero no se activará. Simplemente seleccione la casilla de verificación para activar el menú del desarrollador.
    • Si no ves Desarrollador Disponible a la derecha, luego cambie la izquierda Elija comandos de desplegable Todos los comandos. Encontrar Desarrollador de la lista y seleccione Agregar >> en el centro para agregar ese menú a la cinta.
    • Seleccionar DE ACUERDO cuando termines.
    • Una vez que el menú del desarrollador está activo, puede volver a su ventana de aplicación principal y seleccionar Desarrollador Desde el menú superior. 
    • Luego seleccione Ver código Desde el grupo de controles en la cinta para abrir la ventana del editor de VBA.
    • Esto abrirá la ventana del editor VBA donde puede escribir el código que aprenderá en las próximas secciones.
    • Intente agregar el menú de desarrollador a algunas de las aplicaciones de la oficina que usa todos los días. Una vez que esté cómodo abriendo la ventana del editor de VBA, continúe con la siguiente sección de esta guía.

    Consejos de programación general de VBA para principiantes

    Notará que cuando se abra el editor de VBA, las opciones de navegación en el panel izquierdo se ven diferentes de una aplicación de oficina a la otra.

    Esto se debe a que los objetos disponibles donde puede colocar el código VBA depende de qué objetos hay en la aplicación. Por ejemplo, en Excel, puede agregar el código VBA al libro de trabajo o los objetos de la hoja. En Word, puede agregar el código VBA a los documentos. En PowerPoint, solo a los módulos.

    Entonces, no te sorprendas los diferentes menús. La estructura y la sintaxis del código VBA son los mismos en todas las aplicaciones. La única diferencia son los objetos a los que puede hacer referencia y las acciones que puede tomar sobre esos objetos a través del código VBA.

    Antes de sumergirnos en los diferentes objetos y acciones que puede tomar a través del código VBA, primero veamos la estructura y sintaxis de VBA más común que puede usar cuando escriba el código VBA.

    Dónde poner el código VBA

    Cuando esté en el editor de VBA, debe usar los dos cuadros desplegables en la parte superior de la ventana de edición para elegir a qué objeto desea adjuntar el código y cuando desea que se ejecute el código.

    Por ejemplo, en Excel, si eliges Hoja de cálculo y Activar, El código se ejecutará cada vez que se abra la hoja de trabajo. 

    Otras acciones de hoja de trabajo que puede usar para activar su código VBA incluyen cuando cambia la hoja de trabajo, cuando está cerrada (desactivada), cuando se ejecuta el cálculo de la hoja de trabajo y más.

    Cuando agrega código VBA en el editor, siempre asegúrese de colocar su código VBA en el objeto y usar la acción correcta que desea usar para activar ese código.

    VBA si se declara

    Una declaración IF funciona en VBA al igual que funciona en cualquier otro lenguaje de programación.

    La primera parte de la declaración IF analiza si una condición o un conjunto de condiciones es verdadera. Estas condiciones pueden unirse a un y o o un operador para vincularlas.

    Un ejemplo sería verificar si una calificación en una hoja de cálculo está por encima o por debajo de una calificación de "aprobación", y asignar el estado de pase o falla a otra celda.

    Si células (2, 2)> 75, entonces las células (2, 3) = "pasar" más las células (2, 3) = "fallar"

    Si no desea la declaración completa en una sola línea, puede dividirla en varias líneas agregando un símbolo "_" al final de las líneas.

    If celdas (2, 2)> 75 entonces _
    Celdas (2, 3) = "pasar" más _
    Células (2, 3) = "fallar"

    El uso de esta técnica a menudo puede hacer que el código sea mucho más fácil de leer y depurar.

    VBA para los próximos bucles

    Si las declaraciones son excelentes para comparaciones individuales, como el ejemplo anterior de mirar una sola celda. Pero, ¿qué pasa si desea recorrer una gama completa de celdas y hacer lo mismo si la declaración en cada?

    En este caso necesitaría un bucle para. 

    Para hacer esto, necesitaría usar la longitud de un rango y recorrer esa longitud por la cantidad de filas que contienen datos.

    Para hacer esto, debe definir el rango y las variables celulares, y atravesarlas. También deberá definir un contador para que pueda obtener los resultados a la fila apropiada. Entonces su código VBA primero tendría esta línea.

    Dim rng como rango, celda como rango
    Dim Rowcounter como entero

    Definir el tamaño del rango de la siguiente manera. 

    Establecer rng = rango ("B2: B7")
    rowcounter = 2

    Finalmente, puede crear su bucle for para atravesar cada celda en ese rango y hacer la comparación.

    Para cada celda en RNG Si la celda.Valor> 75 entonces _  Celdas (rowcounter, 3) = "pasar" de lo contrario _  Celdas (rowcounter, 3) = "fallar"  RowCounter = RowCounter + 1 Siguiente celda

    Una vez que se ejecuta este script VBA, ve los resultados en la hoja de cálculo real.

    VBA mientras bucle

    Un bucle de rato también brota a través de una serie de declaraciones, al igual que el bucle for, pero la condición del bucle para continuar es una condición que sigue siendo verdadera.

    Por ejemplo, puede escribir lo mismo para el bucle anterior, como un bucle de tiempo, simplemente utilizando la variable RowCounter de la siguiente manera.

    Mientras que Rowcounter < rng.Count + 2 If celdas (rowcounter, 2)> 75 entonces _  Celdas (rowcounter, 3) = "pasar" de lo contrario _  Celdas (rowcounter, 3) = "fallar"  RowCounter = RowCounter + 1 Encaminarse a

    Nota la rng.Recuento + 2 Se requiere un límite de terminación porque el contador de filas comienza en las 2 y necesita terminar en la fila 7 donde finalizan los datos. Sin embargo, el recuento del rango (B2: B7) es solo 6, y el bucle While solo terminará una vez que el contador sea mayor que el contador, por lo que el último valor de RowCounter debe ser 8 (o RNG.Contar + 2).

    También puede configurar el bucle While de la siguiente manera:

    Mientras que Rowcounter <= rng.Count + 1

    Solo puede incrementar el recuento de rango (6) por 1, porque una vez que la variable RowCounter alcanza el final de los datos (fila 7), el bucle puede finalizar.

    VBA lo hace y haz hasta que boques

    Haz tiempo y haz hasta que los bucles sean casi idénticos a los bucles, pero trabajan ligeramente diferentes.

    • El Mientras que el bucle Comprueba si una condición es verdadera al comienzo del bucle.
    • El Bucle do-while Comprueba si una condición es verdadera después de ejecutar las declaraciones en el bucle.
    • El Bucle de hacer hasta Comprueba si una condición sigue siendo falsa después de ejecutar el bucle.

    En este caso, reescribiría el bucle while arriba de la siguiente manera, como un bucle de hacer.

    Hacer If celdas (rowcounter, 2)> 75 entonces _  Celdas (rowcounter, 3) = "pasar" de lo contrario _  Celdas (rowcounter, 3) = "fallar"  RowCounter = RowCounter + 1 Bucle mientras Rowcounter < rng.Count + 2

    En este caso, la lógica no cambia mucho, pero si desea asegurarse de que la comparación de lógica tenga lugar después de que se ejecuten todas las declaraciones (lo que les permite ejecutar sin importar lo que al menos una vez), entonces un lugar que diga o el bucle do-to-to es la opción correcta.

    VBA Seleccionar declaraciones de casos

    El tipo final de declaración lógica que deberá comprender para comenzar a estructurar su código VBA son los estados de caso seleccionados.

    Dado el ejemplo anterior, supongamos que desea tener un método de calificación que no solo pase fallas. En su lugar, desea asignar una calificación de carta de A a F.

    Puede hacer esto con la siguiente instrucción Select Case:

    Para cada celda en RNG Seleccionar celda de casos  Caso 95 a 100  Celdas (rowcounter, 3) = "A" Caso 85 a 94  Celdas (rowcounter, 3) = "b"  Caso 75 a 84  Celdas (rowcounter, 3) = "c"  Caso 65 a 74  Celdas (Rowcounter, 3) = "D"  Caso 0 a 64  Celdas (rowcounter, 3) = "f"  Final seleccionar RowCounter = RowCounter + 1 Siguiente celda

    La hoja de cálculo resultante después de que se ejecuta este script VBA se parece a la de abajo.

    Ahora sabe todo lo que necesita saber para comenzar a usar VBA en sus aplicaciones de Microsoft Office.