4 errores que puede evitar al programar macros de Excel con VBA

4 errores que puede evitar al programar macros de Excel con VBA / Productividad

Microsoft Excel ya es una herramienta de análisis de datos muy capaz, pero con la capacidad de automatizar tareas repetitivas con macros Cómo enviar correos electrónicos desde una hoja de cálculo de Excel mediante scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel mediante scripts de VBA Nuestra plantilla de código lo ayudará a configurar actualice correos electrónicos automatizados desde Excel utilizando Collaboration Data Objects (CDO) y scripts de VBA. Lee más escribiendo código simple en (VBA), es mucho más poderoso. Sin embargo, utilizado incorrectamente, VBA puede causar muchos problemas.

Incluso si no eres un programador, VBA ofrece funciones simples que te permiten agregar algunas funciones realmente impresionantes a tus hojas de cálculo, así que no te vayas todavía.!

Ya sea que sea un gurú de VBA, que cree cuadros de mandos en Excel, cree su propio panel de control del tiempo en esta clase maestra de hojas de cálculo de Google Cree su propio panel de control del tiempo en esta clase maestra de hojas de cálculo de Google ¿Y vivir una fantasía de Star Trek? ¡De acuerdo! Lea más, o un novato, que solo sabe escribir scripts simples que hacen cálculos básicos de células, puede seguir técnicas de programación sencillas que lo ayudarán a mejorar las probabilidades de escribir código limpio y libre de errores..

Empezando con VBA

Si no ha programado en VBA en Excel anteriormente, habilitar las herramientas de Desarrollador para hacerlo es realmente bastante fácil. Solo ve a Expediente > Opciones y entonces Personalizar la cinta. Solo mueve el Desarrollador comando del grupo desde el panel izquierdo hacia la derecha.

Asegúrese de que la casilla de verificación esté habilitada, y ahora la pestaña Desarrollador aparecerá en su menú de Excel.

La forma más fácil de acceder a la ventana del editor de código en este punto es simplemente haciendo clic en Ver código botón debajo Controles en el menú Desarrollador.

1. Nombres de variables horribles

Ahora que está en la ventana de código, es hora de comenzar a escribir el código VBA. Cómo puede crear su propia aplicación simple con VBA Cómo puede crear su propia aplicación simple con VBA Para aquellos de ustedes que realmente les encantaría poder escribir tu propia aplicación, pero nunca antes has escrito una sola línea de código, voy a explicarte cómo hacer tu ... Leer más. El primer paso importante en la mayoría de los programas, ya sea en VBA o en cualquier otro idioma, es definir sus variables.

A lo largo de un par de décadas de escritura de código, encontré muchas escuelas de pensamiento cuando se trata de convenciones de nombres variables y aprendí algunas cosas de la manera más difícil. Estos son los consejos rápidos para crear nombres de variables:

  • Hazlas lo más cortas posible.
  • Hazlos lo más descriptivos posible..
  • Prólogo con tipo de variable (booleano, entero, etc.).
  • Recuerde usar el alcance correcto (ver más abajo).

Aquí hay una captura de pantalla de muestra de un programa que uso con frecuencia para hacer llamadas WMIC de Windows desde Excel para recopilar información de la PC Cómo ver toda la información de su PC con un script de VBA de Excel simple Cómo ver toda la información de su PC con un script de VBA de Excel simple 10 minutos de trabajo le brindarán información más detallada sobre su computadora de la que nunca imaginó. Suena demasiado bueno para ser verdad? Eso es Windows, si sabes cómo usarlo. Lee mas .

Cuando desee utilizar las variables dentro de cualquier función dentro del módulo u objeto (explicaré esto más adelante), deberá declararlo como “público” variable precediendo la declaración con Público. De lo contrario, las variables se declaran precediéndolas con la palabra Oscuro.

Como puede ver, si la variable es un entero, está precedida por En t. Si es una cuerda, entonces str. Esto ayuda más adelante mientras está programando, porque siempre sabrá qué tipo de datos contiene la variable, solo mirando el nombre. También notará que si hay algo como una cadena que contiene un nombre de computadora, entonces la variable se llama strComputerName.

Evite hacer nombres de variables muy complicados o confusos que solo usted entienda. Haga que sea más fácil que otro programador lo respalde y entienda lo que significa.!

Otro error que cometen las personas es dejar los nombres de las hojas por defecto. “Hoja1”, “Hoja2”, etc ... Esto añade más confusión a un programa. En su lugar, nombra las hojas para que tengan sentido.

De esta manera, cuando hace referencia al nombre de la hoja en su código de VBA de Excel, utilice VBA para automatizar las sesiones de Internet Explorer desde una hoja de cálculo de Excel, utilizando VBA para automatizar las sesiones de Internet Explorer desde una hoja de cálculo de Excel. Su integración con Windows permite el control de Internet Explorer en una serie de maneras sorprendentes de usar Visual Basic para aplicaciones (VBA) de cualquier aplicación que lo admita, como Word, Outlook o Excel. Leer más, te refieres a un nombre que tiene sentido. En el ejemplo anterior, tengo una hoja en la que obtengo información de la red, así que llamo a la hoja “Red”. Ahora, en el código, cada vez que quiera hacer referencia a la hoja de la Red, puedo hacerlo rápidamente sin tener en cuenta qué número de hoja es.

2. Romper en lugar de bucle

Uno de los problemas más comunes que tienen los programadores más nuevos es 6 hábitos de vida que la programación podría enseñarle hoy 6 hábitos de vida que la programación podría enseñarle hoy Todo lo importante que necesita saber para llevar una vida exitosa puede obtenerlo desde un programa de computadora. No me crees Sigue leyendo Lea más cuando empiecen a escribir el código se trata correctamente con los bucles. Y dado que tantas personas que usan Excel VBA son muy novatos en el código, el bucle deficiente es una epidemia.

El bucle es muy común en Excel porque a menudo se procesan los valores de datos en una fila o columna, por lo que es necesario realizar un bucle para procesarlos todos. Los nuevos programadores a menudo solo quieren salir de un bucle (ya sea un bucle For o un look While) al instante cuando se cumple una determinada condición.

Puede ignorar la complejidad del código anterior, solo tenga en cuenta que dentro de la instrucción IF interna, hay una opción para salir del bucle For si la condición es verdadera. Aquí hay un ejemplo más simple:

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

Los nuevos programadores toman este enfoque porque es fácil. Cuando ocurre una condición que estás esperando para salir de un bucle, la tentación de saltar de inmediato es fuerte, pero no lo hagas..

Más a menudo que no, el código que viene después de eso “descanso” Es importante procesarlo, incluso la última vez a través del bucle antes de salir. 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.

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.

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

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.

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.

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

Créditos de la imagen: Computadora por www.BillionPhotos.com a través de Shutterstock, coloridas bandejas de cubos de hielo por hahauk a través de Shutterstock.com

Explore más acerca de: Microsoft Excel, Programación, Programación de Visual Basic.