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

La plataforma de programación VBA(VBA programming) que se ejecuta en casi todos los productos de Microsoft Office(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 principiantes le mostrará cómo agregar el menú Desarrollador a su aplicación de (Developer)Office , cómo ingresar a la ventana del editor de VBA y cómo funcionan las instrucciones y bucles básicos de (VBA)VBA para que pueda comenzar a usar VBA en Excel , Word , Powerpoint , Outlook y OneNote .

Esta guía de VBA utiliza la última versión de los productos de Microsoft Office . Si tiene una versión anterior, es posible que vea algunas ligeras diferencias con respecto a las capturas de pantalla.

Cómo habilitar y usar el editor de VBA(How To Enable & Use The VBA Editor)

En cualquiera de los productos de Office usados ​​en esta guía, puede notar que no tiene el menú Desarrollador al que se hace referencia. (Developer)El menú de desarrollador sólo está disponible en Excel , Word , Outlook y Powerpoint . OneNote no ofrece una herramienta para editar el código VBA desde dentro de la aplicación, pero aún puede hacer referencia a la (VBA)API de OneNote(OneNote API) para interactuar con OneNote desde otros programas de Office

Aprenderá cómo hacer esto en nuestra próxima guía avanzada de VBA .(Advanced VBA)

  • Para habilitar el menú Desarrollador en cualquier producto de oficina, seleccione el menú (Developer)Archivo(File) y seleccione Opciones(Options) en el menú de navegación izquierdo. 
  • Verá una ventana emergente del menú Opciones . (Options)Seleccione Personalizar cinta(Customize Ribbon) en el menú de navegación de la izquierda.

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 los que están actualmente disponibles o activados.

  • Debería ver Desarrollador(Developer) en la lista de la derecha, pero no se activará. Simplemente(Just) seleccione la casilla de verificación para activar el menú Desarrollador .(Developer)

  • Si no ve Desarrollador(Developer) disponible a la derecha, cambie el menú desplegable Elegir comandos de la izquierda a (Choose commands)Todos los comandos(All Commands) . Busque Desarrollador(Developer) en la lista y seleccione Add>> en el centro para agregar ese menú a la cinta(Ribbon) .
  • Seleccione Aceptar(OK) cuando haya terminado.
  • Una vez que el menú Desarrollador(Developer) esté activo, puede volver a la ventana principal de su aplicación y seleccionar Desarrollador(Developer) en el menú superior. 
  • Luego seleccione Ver código(View Code) del grupo Controles(Controls) en la cinta para abrir la ventana del editor de VBA .

  • Esto abrirá la ventana del editor de VBA donde puede escribir el código que aprenderá en las próximas secciones.

  • Intente agregar el menú Desarrollador(Developer) a algunas de las aplicaciones de Office que usa todos los días. Una vez que se sienta cómodo abriendo la ventana del editor de VBA , continúe con la siguiente sección de esta guía.(VBA)

Consejos generales de programación de VBA para principiantes(General VBA Programming Tips for Beginners)

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 otra.

Esto se debe a que los objetos disponibles en los que 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 de trabajo o a los objetos de hoja. (VBA)En Word , puede agregar código VBA a los documentos. (VBA)En Powerpoint , solo para módulos.

Así que no te sorprendas con los diferentes menús. La estructura y sintaxis del código VBA es la misma en todas las aplicaciones. (VBA)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 en ellos a través del código VBA , veamos primero la estructura y sintaxis VBA más comunes que puede usar cuando escribe código VBA .

Dónde poner el código VBA(Where To Put VBA Code)

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(Worksheet) de trabajo y Activar(Activate) , el código se ejecutará cada vez que se abra la hoja de trabajo. 

Otras acciones de la hoja de cálculo que puede usar para activar su código VBA incluyen cuándo cambia la hoja de cálculo, cuándo se cierra (desactiva), cuándo se ejecuta el cálculo de la hoja de cálculo y más.

Cuando agregue 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.

Declaraciones IF de VBA(VBA IF Statements)

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

La primera parte de la instrucción IF analiza si una condición o un 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 de "aprobado" y asignar el estado de aprobado o reprobado 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(VBA For Next Loops)

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 la cantidad de filas que contienen datos.

Para hacer esto, debe definir el rango y las variables de celda, y recorrerlas. También deberá definir un contador para poder enviar los resultados a la fila adecuada. Entonces su código VBA primero tendría esta línea.

Dim rng como rango, celda como rango (Dim rng As Range, cell As Range)
Dim rowCounter como entero(Dim rowCounter as Integer)

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

Set rng = Range(“B2:B7”)
rowCounter = 2

Finalmente, puede crear su ciclo FOR para recorrer cada celda en ese rango y hacer la comparación.

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

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

Ciclos while de VBA(VBA While Loops)

Un ciclo while(Loop) también realiza un ciclo a través de una serie de declaraciones, al igual que el ciclo FOR , pero la condición del ciclo para continuar es una condición que permanece verdadera.

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 + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

Nota: se requiere el límite de terminación rng.Count + 2 porque el contador de filas comienza en 2 y debe terminar en la fila 7 donde terminan los datos. Sin embargo, el conteo del rango (B2:B7) es solo 6, y el bucle While solo terminará una vez que el contador sea MAYOR(GREATER) que el contador, por lo que el último valor del contador de fila debe ser 8 (o rng.Count + 2).

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

While rowCounter <= rng.Count + 1

Solo puede incrementar el conteo de rango (6) en 1, porque una vez que la variable rowCounter llega al final de los datos (fila 7), el ciclo puede terminar.

Bucles de VBA Do While y Do Until(VBA Do While and Do Until Loops)

Los bucles Do While y Do Until son casi idénticos a los bucles While, pero funcionan ligeramente diferentes.

  • El bucle While(While Loop) comprueba si una condición es verdadera al principio del bucle.
  • El bucle Do-While(Do-While Loop) comprueba si una condición es verdadera después de ejecutar las declaraciones en el bucle.
  • El bucle Do-Until(Do-Until Loop) comprueba si una condición sigue siendo falsa después de ejecutar el bucle.

En este caso, reescribiría el ciclo While anterior de la siguiente manera, como un ciclo Do-While.

Do
   If 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 quiere asegurarse de que la comparación lógica se lleve a cabo después de que se ejecuten todas las sentencias (permitiendo que todas se ejecuten al menos una vez), entonces un Do-While o Do-Until loop es la opción correcta.

Declaraciones de casos seleccionados de VBA(VBA Select Case Statements)

El tipo final de declaración lógica que deberá comprender para comenzar a estructurar su código VBA son las declaraciones (VBA)Select Case .

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

Podría hacer esto con la siguiente instrucción Select Case :

For Each cell In rng
   
   Select 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 ejecutar este script de VBA se parece a la siguiente.

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



About the author

Soy técnico de Windows 10 y he estado ayudando a personas y empresas a aprovechar el nuevo sistema operativo durante muchos años. Tengo un gran conocimiento sobre Microsoft Office, incluido cómo personalizar la apariencia y las aplicaciones para diferentes usuarios. Además, sé cómo usar la aplicación Explorer para explorar y encontrar archivos y carpetas en mi computadora.



Related posts