Family Encyclopedia >> Work

4 mistakes you can avoid when programming Excel macros with VBA

Microsoft Excel is already a very capable data analysis tool, but with the ability to automate repetitive tasks with macros How to Send Email from an Excel Spreadsheet Using VBA Scripts How to Send Email from an Excel Spreadsheet Using VBA scripts Our code template will help you set up automated email updates from Excel using Collaboration Data Objects (CDO) and VBA scripts. Read More However, used incorrectly, VBA can cause a lot of problems.

Even if you're not a programmer, VBA offers simple functions that allow you to add some really awesome features to your spreadsheets, so don't go away just yet!

Whether you're a VBA guru, creating dashboards in Excel, create your own time dashboard in this Google Spreadsheets master class Create your own time dashboard in this Google Spreadsheets master class google calculation And living a Star Trek fantasy? In agreement! Read More

Getting started with VBA

If you haven't programmed in VBA in Excel before, enabling the Developer tools to do so is actually quite easy. Just go to File> Options and then Customize Ribbon . Just move the Developer group command from the left pane to the right.

4 mistakes you can avoid when programming Excel macros with VBA

Make sure the checkbox is enabled, and now the Developer tab will appear in your Excel menu.

4 mistakes you can avoid when programming Excel macros with VBA

The easiest way to access the code editor window at this point is simply by clicking View Code button under Controls in the Developer menu.

1. Horrible variable names

Now that you're in the code window, it's time to start writing your VBA code. How You Can Create Your Own Simple Application With VBA How You Can Create Your Own Simple Application With VBA For those of you who would really love to be able to write your own application, but have never written a single line of code before, I'm going to walk you through how to make your . .. Read more. The first important step in most programs, whether in VBA or any other language, is to define your variables.

Over the course of a couple decades of writing code, I've encountered many schools of thought when it comes to variable naming conventions and learned some things the hard way. Here are the quick tips for creating variable names:

  • Make them as short as possible.
  • Make them as descriptive as possible..
  • Prolog with variable type (boolean, integer, etc.).
  • Remember to use the correct scope (see below).

Here is a sample screenshot of a program I frequently use to make Windows WMIC calls from Excel to collect PC information How to View All Your PC Information with a Simple Excel VBA Script How to View All Information from your PC with a simple Excel VBA script 10 minutes of work will give you more detailed information about your computer than you ever imagined. It sounds too good to be true? That's Windows, if you know how to use it. Read more.

4 mistakes you can avoid when programming Excel macros with VBA

When you want to use the variables within any function within the module or object (I'll explain this later), you must declare it as a "public" variable by preceding the declaration with Public . Otherwise, variables are declared by preceding them with the word Dark .

As you can see, if the variable is an integer, it is preceded by In t . If it's a string, then str . This helps later while you're programming, because you'll always know what type of data the variable contains, just by looking at the name. You'll also notice that if there is something like a string that contains a computer name, then the variable is called strComputerName .

Avoid making very complicated or confusing variable names that only you understand. Make it easier for another programmer to back it up and understand what it means!

Another mistake people make is to leave the default sheet names. “Sheet1”, “Sheet2”, etc... This adds more confusion to a program. Instead, name the leaves so they make sense.

4 mistakes you can avoid when programming Excel macros with VBA

This way, when you refer to the sheet name in your Excel VBA code, use VBA to automate Internet Explorer sessions from an Excel worksheet, use VBA to automate Internet Explorer sessions from an Excel worksheet Excel calculation. Its integration with Windows lets you control Internet Explorer in a number of amazing ways to use Visual Basic for Applications (VBA) from any application that supports it, such as Word, Outlook, or Excel. Read More In the example above, I have a sheet where I get network information, so I name the sheet “Network”. Now, in the code, whenever I want to reference the Network sheet, I can do it quickly regardless of what sheet number it is.

2. Break instead of loop

One of the most common problems newer programmers have is 6 Life Habits Programming Could Teach You Today 6 Life Habits Programming Could Teach You Today Everything important you need to know to lead a successful life can be obtained from a programming program. computer. You don't believe me Continue reading Read More And since so many people who use Excel VBA are very new to code, poor looping is an epidemic.

Looping is very common in Excel because data values ​​are often processed in one row or column, so it is necessary to loop to process all of them. New programmers often just want to exit a loop (either a For loop or a While look) instantly when a certain condition is met.

4 mistakes you can avoid when programming Excel macros with VBA

You can ignore the complexity of the code above, just note that inside the inner IF statement, there is an option to exit the For loop if the condition is true. Here is a simpler example:

Para x = 1 a 20 Si x = 6 luego salga Para y = x + intRoomTemp Siguiente i 

New programmers take this approach because it's easy. When a condition occurs that you're waiting to break out of a loop, the temptation to jump right away is strong, but don't.

More often than not, the code that comes after that "rest" is important to process, including the last time through the loop before exiting. Una forma mucho más limpia y profesional de manejar las condiciones en las que desea dejar un bucle a mitad de camino, es simplemente incluir esa condición de salida en algo como una instrucción While..

Mientras (x> = 1 Y x<=20 AND x<>6) Para x = 1 a 20 y = x + intRoomTemp Siguiente i Wend 

Esto permite un flujo lógico de su código, con la última ejecución cuando x es 5, y luego salir con gracia una vez que el bucle For cuenta hasta 6. No es necesario incluir los incómodos comandos EXIT o BREAK mid-loop.

3. No usar matrices

Otro error interesante que los nuevos programadores de VBA Los fundamentos de la programación de computadoras 101 - Variables y tipos de datos Los fundamentos de la programación de computadoras 101 - Variables y tipos de datos Habiendo introducido y hablado un poco acerca de la programación orientada a objetos antes y de dónde viene su nombre, pensé que era hora de Ir a través de los fundamentos absolutos de la programación de una manera no específica del lenguaje. Esta ... Leer más make es tratar de procesar todo dentro de numerosos bucles anidados que se filtran a través de filas y columnas durante el proceso de cálculo.

Si bien esto puede funcionar, también podría dar lugar a problemas importantes de rendimiento, si constantemente tiene que realizar los mismos cálculos en los mismos números en la misma columna. Recorrer esa columna y extraer los valores cada vez no solo es tedioso de programar, sino que también mata a su procesador. Una forma más eficiente de manejar largas listas de números es utilizar una matriz.

Si nunca has usado una matriz antes, no tengas miedo. Imagine una matriz como una bandeja de cubitos de hielo con un cierto número de “cubitos” Usted puede poner información en. Los cubos están numerados del 1 al 12, y así es como “poner” datos en ellos.

4 mistakes you can avoid when programming Excel macros with VBA

Puedes definir fácilmente una matriz simplemente escribiendo Dim arrMyArray (12) como entero .

Esto crea una “bandeja” Con 12 espacios disponibles para que llenes.

A continuación se muestra el aspecto de un código de bucle de fila sin una matriz:

Sub Prueba1 () Dim x As Entero intNumRows = Rango ("A2", Rango ("A2"). Fin (xldown)). Rows.Count Range ("A2"). Seleccione For x = 1 To intNumRows If Range (" A "& str (x)). Valor < 100 then intTemp = (Range("A" & str(x)).value) * 32 - 100 End If ActiveCell.Offset(1, 0).Select Next End Sub 

En este ejemplo, el código se procesa hacia abajo a través de cada celda individual en el rango y realiza el cálculo de temperatura.

Más adelante en el programa, si alguna vez desea realizar algún otro cálculo en estos mismos valores, tendrá que duplicar este código, procesar a través de todas estas celdas y realizar su nuevo cálculo..

Ahora, si en cambio, usa una matriz, entonces puede almacenar los 12 valores de la fila en su conveniente matriz de almacenamiento. Luego, más tarde, cuando quiera ejecutar cálculos con esos números, ya están en la memoria y listos para usar.

Sub Prueba1 () Dim x As Integer intNumRows = Rango ("A2", Rango ("A2"). Fin (xldown)). Rows.Count Range ("A2"). Seleccione Para x = 1 Para intNumRows arrMyArray (x- 1) = Rango ("A" & str (x)) valor) ActiveCell.Offset (1, 0) .Seleccione Next End Sub 

los “x-1” para señalar el elemento de la matriz solo es necesario porque el bucle For comienza en 1. Los elementos de la matriz deben comenzar en 0.

Pero una vez que tenga su matriz cargada con los valores de la fila, más adelante en el programa, puede juntar los cálculos que desee utilizando la matriz.

Sub TempCalc () Para x = 0 A UBound (arrMyArray) arrMyTemps (y) = arrMyArray (x) * 32 - 100 Siguiente End Sub 

Este ejemplo recorre toda la matriz de filas (UBound le proporciona el número de valores de datos en la matriz), realiza el cálculo de la temperatura y luego la coloca en otra matriz llamada arrMyTemps.

Puedes ver cuanto más simple es el segundo código de cálculo. Y a partir de este momento, cada vez que desee realizar más cálculos en el mismo conjunto de números, su matriz ya está precargada y lista para usar.

4. Usando demasiadas referencias

Ya sea que esté programando en Visual Basic de pleno derecho o VBA, deberá incluir “referencias” para acceder a ciertas funciones, como acceder a una base de datos de Access o escribir resultados en un archivo de texto.

Las referencias son algo así como “bibliotecas” Con la funcionalidad que puede aprovechar, si habilita ese archivo. Puede encontrar referencias en la vista Desarrollador haciendo clic en Herramientas en el menú y luego haciendo clic en Referencias .

4 mistakes you can avoid when programming Excel macros with VBA

Lo que encontrará en esta ventana son todas las referencias seleccionadas actualmente para su proyecto VBA actual.

4 mistakes you can avoid when programming Excel macros with VBA

En mi experiencia, las selecciones aquí pueden cambiar de una instalación de Excel a otra, y de una PC a otra. Mucho depende de lo que otras personas hayan hecho con Excel en esta PC, si se agregaron o habilitaron ciertos complementos o funciones, o si otros programadores podrían haber usado ciertas referencias en proyectos anteriores.

La razón por la que es bueno revisar esta lista es porque las referencias innecesarias desperdician recursos del sistema. Si no utiliza ninguna manipulación de archivos XML, ¿por qué mantener seleccionado Microsoft XML? Si no se comunica con una base de datos, elimine Microsoft DAO. Si no escribe la salida en un archivo de texto, elimine Microsoft Scripting Runtime .

Si no está seguro de lo que hacen estas referencias seleccionadas, presione F2 y verá el Explorador de objetos. En la parte superior de esta ventana, puede elegir la biblioteca de referencia para navegar.

4 mistakes you can avoid when programming Excel macros with VBA

Una vez seleccionado, verá todos los objetos y funciones disponibles, en los que puede hacer clic para obtener más información sobre.

Por ejemplo, cuando hago clic en la biblioteca DAO, rápidamente queda claro que se trata de conectarse y comunicarse con bases de datos.

4 mistakes you can avoid when programming Excel macros with VBA

Reducir la cantidad de referencias que usa en su proyecto de programación es simplemente sensato y ayudará a que su aplicación general se ejecute de manera más eficiente.

Programación en Excel VBA

La idea de escribir código en Excel Ahorre tiempo con operaciones de texto en Excel Ahorre tiempo con operaciones de texto en Excel Excel puede hacer magia con los números y puede manejar los caracteres igualmente bien. Este manual muestra cómo analizar, convertir, reemplazar y editar texto en hojas de cálculo. Estos fundamentos te permitirán realizar transformaciones complejas. Leer más asusta a mucha gente, pero este miedo realmente no es necesario. Visual Basic para aplicaciones es un lenguaje muy simple de aprender, y si sigue las prácticas comunes básicas mencionadas anteriormente, se asegurará de que su código sea limpio, eficiente y fácil de entender..

¿Codificas en VBA? ¿Qué tipo de lecciones ha aprendido a través de los años que puede compartir con otros lectores que aprenden VBA por primera vez? Comparte tus consejos en la sección de comentarios a continuación.!