Family Encyclopedia >> Work

A beginner's tutorial on how to write VBA macros in Excel (and why you should learn)

Excel macros can save you a ton of time by automating the Excel processes you use often How to Record a Macro in Excel 2016 How to Record a Macro in Excel 2016 Did you know that you could automate repetitive tasks in Microsoft Excel using macros? We will show you how to record a macro in Excel 2016 to save a lot of time. Read more . But the macros are quite limited. It's easy to go wrong with the burning tool, and the burning process is cumbersome.

Using VBA to create macros gives you much more power. You can tell Excel exactly what to do and how to do it. You also have access to many more features and capabilities. If you use Excel regularly, it's worth learning how to create VBA macros.

We'll start with the basics.

What is VBA??

VBA is Visual Basic for Applications , a programming language that you can use in many Microsoft applications. Visual Basic is a programming language, and VBA is the application-specific version. (Microsoft discontinued Visual Basic in 2008, but VBA is still going strong.)

Fortunately for non-programmers, VBA is very simple, and the interface you use to edit it is very helpful. Many of the commands will use tooltips and autocompletions, which will help you get your script up and running quickly.

Still, VBA takes a while to get used to.

The advantages of VBA macros in Excel

If VBA is more difficult than recording a macro, why would you use it? The short answer is that you get a lot more power from VBA macros.

Instead of clicking on the spreadsheet and recording those clicks, you can access the full range of Excel features and capabilities. You just need to know how to use them..

And once you get more comfortable with VBA, you can do all the things you could do in a regular macro in much less time. The results will also be more predictable, as you are telling Excel exactly to do. There is no ambiguity at all..

Once you've created your VBA macro, it's easy to save and share it so anyone else can take advantage of it. This is especially useful when working with many people who need to do the same thing in Excel.

Let's look at a simple VBA macro to see how it works.

An example of a VBA macro in Excel

Let's look at a simple macro. Our spreadsheet contains the names of the employees, the number of the store where the employees work, and their quarterly sales.

A beginner s tutorial on how to write VBA macros in Excel (and why you should learn)

This macro will aggregate the quarterly sales for each store and write those totals to the spreadsheet cells (if you're not sure how to access the VBA dialog, check out our VBA tutorial here):

Subventa de ventas () Dim Sum1 como moneda Dim Sum2 como moneda Dim Sum3 como moneda Dim Sum4 como moneda para cada celda en rango ("C2: C51") Cell.Activar si IsEmpty (Cell) luego salir para si ActiveCell.Offset (0, -1) = 1 Luego Sum1 = Sum1 + Cell.Value ElseIf ActiveCell.Offset (0, -1) = 2 Luego Sum2 = Sum2 + Cell.Value ElseIf ActiveCell.Offset (0, -1) = 3 Luego Sum3 = Sum3 + Cell.Value ElseIf ActiveCell.Offset (0, -1) = 4 Then Sum4 = Sum4 + Cell.Value End If Next Cell Range ("F2"). Value = Sum1 Range ("F3"). Value = Sum2 Range (" F4 "). Valor = Rango Sum3 (" F5 "). Valor = Sum4 End Sub

This may seem long and complicated, but we'll break it down so you can see the individual elements and learn a bit about the basics of VBA.

Declaring the Sub

At the beginning of the module, we have “Sub StoreSales()”. This defines a new sub named StoreSales.

You can also define functions; the difference is that functions can return values ​​and subs can't (if you're familiar with other programming languages, subs are equivalent to methods). En este caso, no necesitamos devolver un valor, por lo que estamos usando un sub.

Al final del módulo, tenemos “End Sub,” lo que le dice a Excel que hemos terminado con esta macro VBA.

Declarando variables

Las primeras líneas de código en nuestro script comienzan con “Oscuro.” Dim es el comando de VBA para declarar una variable.

Asi que “Dim Sum1” crea una nueva variable llamada “Suma 1.” Sin embargo, necesitamos decirle a Excel qué tipo de variable es esta. Necesitamos elegir un tipo de datos. Hay muchos tipos de datos diferentes en VBA; puede encontrar la lista completa en los documentos de ayuda de Microsoft.

Debido a que nuestra macro VBA tratará con monedas, estamos usando el tipo de datos de moneda.

La declaración “Dim Sum1 como moneda” le dice a Excel que cree una nueva variable de Moneda llamada Sum1. Cada variable que usted declara necesita tener un “Como” Declaración para decirle a Excel su tipo..

Comenzando un For Loop

Los bucles son algunas de las cosas más poderosas que puedes crear en cualquier lenguaje de programación. Si no está familiarizado con los bucles, consulte esta explicación de los bucles Do-While Cómo funcionan los bucles Do-While en la programación de computadoras Cómo funcionan los bucles Do-While en la programación de computadoras Los bucles son uno de los primeros tipos de control que aprenderá en la programación. . Probablemente sepa sobre el tiempo y para los bucles, pero ¿qué hace un bucle do-while? Read more . En este ejemplo, estamos usando un bucle For, que también se trata en el artículo.

Así es como se ve el bucle:

Para cada celda en el rango ("C2: C51") [un montón de cosas] Siguiente celda

Esto le dice a Excel que itere a través de las celdas en el rango que especificamos. Hemos utilizado un objeto Range. Comprender las celdas de Excel frente a las funciones de rango en VBA. Comprender las celdas de Excel y las funciones de rango en VBA. El uso de las funciones Range y Cells en Excel puede resultar muy confuso. Aquí le mostramos cómo puede utilizarlos de maneras que probablemente nunca imaginó, con la ayuda de VBA Read More, que es un tipo específico de objeto en VBA. Cuando lo usamos de esta manera-Range (“C2:C51”) le dice a Excel que estamos interesados ​​en esas 50 celdas.

“Para cada” le dice a Excel que vamos a hacer algo con cada celda en el rango. “Siguiente celda” viene después de todo lo que queremos hacer, y le dice a Excel que comience el ciclo desde el principio (comenzando con la siguiente celda).

También tenemos esta declaración:“Si IsEmpty (celda), salga para.”

¿Puedes adivinar lo que hace??

Note: Estrictamente hablando, usar un bucle While puede haber sido una mejor opción. 4 errores que puede evitar al programar macros de Excel con VBA 4 errores que puede evitar al programar macros de Excel con VBA El código y las macros simples son las claves de los superpoderes de Microsoft Excel. Incluso los que no son programadores pueden agregar fácilmente una funcionalidad impresionante a sus hojas de cálculo con los conceptos básicos virtuales para aplicaciones (VBA). ¡Evita estos errores de principiante de programación! Read more . Sin embargo, por el bien de la enseñanza, decidí usar un bucle For con un Exit.

Declaraciones si-entonces-más-si

El núcleo de esta macro en particular está en las declaraciones If-then-Else. Aquí está nuestra secuencia de declaraciones condicionales:

Si ActiveCell.Offset (0, -1) = 1 Luego Sum1 = Sum1 + Cell.Value ElseIf ActiveCell.Offset (0, -1) = 2 Luego Sum2 = Sum2 + Cell.Value ElseIf ActiveCell.Offset (0, -1) = 3 Luego Sum3 = Sum3 + Cell.Value ElseIf ActiveCell.Offset (0, -1) = 4 Luego Sum4 = Sum4 + Cell.Value End If

En su mayor parte, probablemente puede adivinar qué hacen estas afirmaciones. Puede que no esté familiarizado con ActiveCell.Offset, sin embargo. “ActiveCell.Offset (0, -1)” le dice a Excel que mire la celda que es una columna a la izquierda de la celda activa.

En nuestro caso, eso le dice a Excel que consulte la columna de número de tienda. Si Excel encuentra un 1 en esta columna, toma el contenido de la celda activa y lo agrega a Sum1. Si encuentra un 2, agrega el contenido de la celda activa a Sum2. And so on.

Excel pasa por todas estas declaraciones en orden. Si la declaración condicional Cómo usar declaraciones IF en Microsoft Excel Cómo usar declaraciones IF en Microsoft Excel Ya sea que sea un experto experimentado o un principiante en hojas de cálculo, le recomendamos consultar esta guía de declaraciones IF en Excel. Leer más está satisfecho, completa la instrucción Then. Si no, se mueve al siguiente ElseIf. Si llega hasta el final y no se cumple ninguna de las condiciones, no tomará ninguna medida..

La combinación del bucle y los condicionales es lo que impulsa esta macro. El bucle le dice a Excel que pase por cada celda de la selección, y los condicionales le dicen qué hacer con esa celda.

Escritura de valores celulares

Finalmente, podemos escribir los resultados de nuestros cálculos a las celdas. Aquí están las líneas que usamos para hacer eso:

Rango ("F2"). Valor = Rango Sum1 ("F3"). Valor = Rango Sum2 ("F4"). Valor = Rango Sum3 ("F5"). Valor = Suma4

Con “.Valor” y un signo igual, establecemos cada una de esas celdas al valor de una de nuestras variables.

And that is! Le decimos a Excel que hemos terminado de escribir este Sub con “End Sub,” y la macro VBA está completa.

Cuando ejecutamos la macro con el Macros botón en el Desarrollador pestaña, obtenemos nuestras sumas:

A beginner s tutorial on how to write VBA macros in Excel (and why you should learn)

Juntando los bloques de construcción de VBA en Excel

Cuando miras por primera vez la macro VBA anterior, parece bastante compleja. Pero después de descomponerlo en sus partes constituyentes, la lógica se vuelve clara. Como cualquier lenguaje de scripting, lleva tiempo acostumbrarse a la sintaxis de VBA.

Pero con la práctica, desarrollará su vocabulario de VBA y podrá escribir macros más rápido, con mayor precisión y con mucha más potencia de la que podría grabar..

Cuando te quedas atascado, realizar una búsqueda en Google es una forma rápida de obtener respuestas a tus preguntas de VBA. Y la referencia de Excel VBA de Microsoft puede ser útil si está dispuesto a profundizar en él para obtener una respuesta técnica..

Una vez que se sienta cómodo con lo básico, puede comenzar a usar VBA para cosas como enviar correos electrónicos desde Excel, exportar tareas de Outlook Cómo exportar sus tareas de Outlook a Excel con VBA Cómo exportar sus tareas de Outlook a Excel con VBA Ya sea que esté o no Un fanático de Microsoft, algo bueno que se puede decir acerca de los productos de MS Office, al menos, es lo fácil que es integrarlos entre sí ... Lea más y muestre la información de su PC. Cómo ver toda la información de su PC usando. una secuencia de comandos de VBA de Excel simple Cómo ver toda la información de su PC con una secuencia de comandos de VBA de Excel simple y 10 minutos de trabajo le brindarán información más detallada acerca de su computadora de la que nunca creyó posible. Suena demasiado bueno para ser verdad? Eso es Windows, si sabes cómo usarlo. Read more.