La plataforma 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 el uso de esos productos.
Esta guía de VBA para los principiantes le mostrarán cómo agregar el menú Desarrollador a su aplicación de Office, cómo ingresar a 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 .
Esto La guía de VBA usa la última versión de los productos de Microsoft Office. Si tiene una versión anterior, puede ver algunas pequeñas diferencias con respecto a las capturas de pantalla.
Cómo habilitar y usar el editor de VBA
en cualquiera de las oficinas productos utilizados en esta guía, puede notar que no tiene el menú Desarrollador referenciado. El menú de desarrollador solo está disponible en Excel, Word, Outlook y Powerpoint. OneNote no ofrece una herramienta para editar el código VBA desde el interior de la aplicación, pero aún puede hacer referencia a la API de OneNote para interactuar con OneNote desde otros programas de Office.
Aprenderá cómo hacer esto en nuestra próxima guía avanzada de VBA.
La lista de la izquierda incluye todos los menús y comandos de menú disponibles en esa aplicación de Office. La lista de la derecha son las que están actualmente disponibles o activadas.
In_content_1 all: [300x250] / dfp: [640x360]->Consejos generales de programación de VBA para principiantes
Notará que cuando se abre el editor de VBA, las opciones de navegación en el panel izquierdo se ven diferentes de una aplicación de Office a la otra.
Esto se debe a que los objetos disponibles donde puede colocar el código VBA dependen de los objetos que haya en la aplicación. Por ejemplo, en Excel, puede agregar código VBA al libro u objetos de hoja. En Word, puede agregar código VBA a los documentos. En Powerpoint, solo para módulos.
Por lo tanto, no se sorprenda por los diferentes menús. La estructura y la sintaxis del código VBA es la misma en todas las aplicaciones. La única diferencia son los objetos a los que puede hacer referencia y las acciones que puede realizar en esos objetos a través del código VBA.
Antes de sumergirnos en los diferentes objetos y acciones que puede realizar a través del código VBA, primero mire la estructura y la sintaxis más comunes de VBA que puede usar cuando escribe código VBA.
Dónde colocar el código de 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 cuándo desea que se ejecute el código.
Por ejemplo, en Excel, si elige Hoja de trabajoy Activar, el código se ejecutará cada vez que se abra la hoja de trabajo.
Otra hoja de trabajo las acciones que puede usar para activar su código VBA incluyen cuando la hoja de trabajo cambia, 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 haga asegúrese de colocar su código VBA en el objeto y utilice la acción correcta que desea usar para activar ese código.
Declaraciones de VBA IF
Un IF La declaración funciona en VBA al igual que en cualquier otro lenguaje de programación.
La primera parte de la declaración IF analiza si una condición o conjunto de condiciones es verdadera. Estas condiciones se pueden unir mediante un operador AND u OR 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 “aprobatoria” y asignar el pase o estado de error a otra celda.
If Cells (2, 2)>75 Then Cells (2, 3) = "Pass" Else Cells (2, 3) = "Fail"
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 Cells (2, 2)>75 Then _
Cells (2, 3) = "Pass" Else _
Cells (2, 3) = "Fail"
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 siguientes bucles
Las declaraciones IF son excelentes para comparaciones individuales, como el ejemplo anterior de mirar una sola celda. Pero, ¿qué sucede si desea recorrer un rango completo de celdas y hacer la misma instrucción IF en cada una?
En este caso, necesitaría un bucle FOR.
Para hacer esto, necesitaría usar la longitud de un rango, y recorrer esa longitud por el número de filas que contienen datos.
Para hacer esto, necesita para definir el rango y las variables de celda, y recorrerlas. También deberá definir un contador para que pueda enviar los resultados a la fila correspondiente. Por lo tanto, su código VBA primero tendría esta línea.
Dim Rng As Range, cell As Range
Dim rowCounter as Integer
Defina el tamaño del rango de la siguiente manera.
Establecer rng = Range ("B2: B7")
rowCounter = 2
Finalmente, puede crear su bucle FOR para recorrer cada celda en ese rango y hacer la comparación.
For Each cell In rngIf cell.Value > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Next cell
Una vez que se ejecuta Secuencia de comandos VBA, verá el da como resultado la hoja de cálculo real.
VBA While Loops
A While Loop también recorre una serie de declaraciones, al igual que el bucle FOR, pero la condición del bucle para continuar es una condición restante verdadero.
Por ejemplo, podría escribir el mismo bucle FOR anterior, como un bucle WHILE, simplemente usando la variable rowCounter de la siguiente manera.
While rowCounter < rng.Count + 2If Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Wend
Nota: el límite de terminación rng.Count + 2es obligatorio porque el contador de filas comienza en 2 y debe terminar en la fila 7 donde terminan los datos. Sin embargo, el recuento del rango (B2: B7) es solo 6, y el ciclo While solo finalizará una vez que el contador sea MAYOR que el contador, por lo que el último valor de RowCounter debe ser 8 (o rng.Count + 2).
También puede configurar el ciclo While de la siguiente manera:
Mientras rowCounter <= rng.Count + 1
Puede solo incremente el recuento de rango (6) en 1, porque una vez que la variable rowCounter alcanza el final de los datos (fila 7), el ciclo puede finalizar.
VBA Do While y Do Before Loops
Los bucles Do While y Do Before son casi idénticos a los bucles While, pero funcionan ligeramente diferentes.
En este caso, volvería a escribir t El bucle While arriba de la siguiente manera, como un bucle Do-While.
DoIf Cells(rowCounter, 2) > 75 Then _ Cells(rowCounter, 3) = "Pass" Else _ Cells(rowCounter, 3) = "Fail" rowCounter = rowCounter + 1 Loop While rowCounter < rng.Count + 2
En este caso, la lógica no cambia mucho, pero si desea asegurarse de que la lógica la comparación se lleva a cabo después de que se ejecutan todas las declaraciones (permitiendo que todas se ejecuten sin importar al menos una vez), entonces un bucle Do-While o Do-Hasta es la opción correcta.
Declaraciones de casos seleccionados de VBA
El tipo final de declaración lógica que necesitará comprender para comenzar a estructurar su código VBA son las declaraciones de casos seleccionados.
Dado el ejemplo anterior, supongamos que desea tener un método de calificación que no sea solo pasar fallas. En su lugar, desea asignar una calificación de letra de la A a la F.
Puede hacerlo con la siguiente declaración de Seleccionar caso:
For Each cell In rngSelect Case cell Case 95 To 100 Cells(rowCounter, 3) = "A" Case 85 To 94 Cells(rowCounter, 3) = "B" Case 75 To 84 Cells(rowCounter, 3) = "C" Case 65 To 74 Cells(rowCounter, 3) = "D" Case 0 To 64 Cells(rowCounter, 3) = "F" End Select rowCounter = rowCounter + 1 Next cell
La hoja de cálculo resultante después de que se ejecute este script VBA, se parece al siguiente.
Ahora ya sabe todo lo que necesita saber para comenzar a usar VBA en sus aplicaciones de Microsoft Office.