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

El código simple y las macros son las claves de los superpoderes de Microsoft Excel. Incluso los no programadores pueden agregar fácilmente funcionalidades impresionantes a sus hojas de cálculo con Virtual Basics for Applications (VBA). ¡Solo evita estos errores de programación para principiantes!

El código simple y las macros son las claves de los superpoderes de Microsoft Excel.  Incluso los no programadores pueden agregar fácilmente funcionalidades impresionantes a sus hojas de cálculo con Virtual Basics for Applications (VBA).  ¡Solo evita estos errores de programación para principiantes!
Anuncio

Microsoft Excel 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 con scripts de VBA. Le mostraremos cómo configurar correos electrónicos automáticos desde Excel utilizando Collaboration Data Objects, (CDO) y scripts VBA. Nuestras plantillas de código hacen que esto sea mucho más fácil de lo que parece. Lea más escribiendo código simple en (VBA), es mucho más poderoso. Sin embargo, usado 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!

Si usted es un gurú de VBA, quién crea tableros en Excel Cree su propio panel meteorológico en esta clase principal de hojas de cálculo de Google Cree su propio panel meteorológico en esta clase principal de hojas de cálculo de Google ¿Le gustaría convertir su cuenta de Google Drive en un sistema de análisis meteorológico inteligente?, y vivir una fantasía de Star Trek? ¡De acuerdo! Lea más, o un novato, que solo sepa cómo escribir guiones simples que hagan cálculos básicos de celdas, puede seguir técnicas de programación sencillas, que le ayudarán a mejorar las probabilidades de escribir código limpio y sin errores.

Comenzando con VBA

Si no ha programado en VBA en Excel anteriormente, habilitar las herramientas de desarrollo para hacerlo es realmente bastante fácil. Simplemente vaya a Archivo > Opciones y luego Personalice Cinta . Simplemente mueva el grupo de comandos del desarrollador desde el panel izquierdo hacia la derecha.

excel-vba1

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

excel-vba2

La forma más fácil de acceder a la ventana del editor de código en este punto es simplemente hacer clic en el botón Ver código en 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 hacer su propia aplicación simple con VBA Cómo puede hacer su propia aplicación simple con VBA Para aquellos de ustedes que realmente les encantaría poder escribir su propia aplicación, pero nunca he escrito una sola línea de código, voy a guiarlo para que haga su ... 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 mis dos décadas de escritura de códigos, encontré muchas escuelas de pensamiento cuando se trata de convenciones de nomenclatura variables y aprendí algunas cosas por las malas. Estos son los consejos rápidos para crear nombres de variables:

  • Hazlos lo más cortos posible.
  • Hazlos tan descriptivos como sea posible.
  • Prefórmalos con tipo de variable (booleano, entero, etc.).
  • Recuerde usar el alcance correcto (ver a continuación).

Aquí hay una captura de pantalla de ejemplo de un programa que utilizo a menudo para hacer llamadas de WMIC Windows desde Excel para reunir información de PC Cómo ver toda la información de su PC usando un script de Excel VBA simple Cómo ver toda la información de su PC usando un script de Excel VBA simple Excel y 10 minutos de trabajo le brindarán información más detallada sobre su computadora de lo que alguna vez pensó posible. Suena demasiado bueno para ser verdad? Eso es Windows, si sabes cómo usarlo. Lee mas .

excel-vba3

Cuando quiera usar las variables dentro de cualquier función dentro del módulo u objeto (explicaré esto a continuación), entonces debe declararlo como una variable "pública" precediendo la declaración con Público . De lo contrario, las variables se declaran premarcándolas con la palabra Dim .

Como puede ver, si la variable es un número entero, está prologada con int . Si es una cadena, entonces str . Esto ayuda más adelante mientras está programando porque siempre sabrá qué tipo de datos tiene la variable, simplemente mirando el nombre. También notará que si hay algo así 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 para otro programador seguirlo y comprender lo que significa todo!

Otro error que comete la gente es dejar los nombres de las hojas como "Hoja1", "Hoja2" por defecto, etc. Esto agrega confusión adicional a un programa. En su lugar, nombre las hojas para que tengan sentido.

excel-vba4

De esta manera, cuando se refiere al nombre de la hoja en su código Excel VBA Usando VBA para automatizar sesiones de Internet Explorer desde una hoja de cálculo Excel Usando VBA para automatizar sesiones de Internet Explorer desde una hoja de cálculo Excel Su integración con Windows permite el control de Internet Explorer en varios Maneras sorprendentes usando el script de Visual Basic para Aplicaciones (VBA) desde cualquier aplicación que lo soporte, como Word, Outlook o Excel. Lea más, se refiere a un nombre que tiene sentido. En el ejemplo anterior, tengo una hoja donde obtengo información de la red, por lo que llamo a la hoja "Red". Ahora en el código, cada vez que quiero hacer referencia a la hoja de red, puedo hacerlo rápidamente sin buscar el número de hoja que es.

2. Rompiendo en lugar de Looping

Uno de los problemas más comunes que el programador más nuevo tiene 6 hábitos de vida que la programación podría enseñarte hoy 6 Hábitos de vida que la programación podría enseñarte hoy Todo lo importante que debes saber sobre cómo vivir una vida exitosa, lo puedes obtener de un programa de computadora. No me creas? Sigue leyendo. Leer más cuando comienzan a escribir el código es el adecuado para los bucles. Y dado que muchas personas que usan Excel VBA son en gran medida novatos en el código, los bucles pobres son una epidemia.

El bucle es muy común en Excel porque a menudo está procesando valores de datos en una fila o columna completa, por lo que debe realizar un ciclo para procesarlos todos. Los nuevos programadores a menudo quieren simplemente salir de un bucle (ya sea un bucle For o un look While) instantáneamente cuando una determinada condición es verdadera.

excel-vba5

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:

For x = 1 To 20 If x = 6 Then Exit For y = x + intRoomTemp Next i 

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

En la mayoría de los casos, es importante procesar el código que viene después de ese "corte", incluso la última vez que se pasó por el ciclo antes de salir. Una forma mucho más limpia y profesional de manejar las condiciones en las que desea dejar un ciclo a la mitad, es solo incluir esa condición de salida en algo como una declaración While.

 While (x>=1 AND x<=20 AND x6) For x = 1 To 20 y = x + intRoomTemp Next i Wend 

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

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 Lo básico de la programación de computadoras 101 - Variables y tipos de datos Después de haber presentado y hablado un poco sobre la programación orientada a objetos y de dónde viene su homónimo, pensé que era hora de ir a través de los fundamentos absolutos de la programación de una manera no específica del idioma. Esto ... Leer más make intenta procesar todo dentro de numerosos bucles anidados que filtran hacia abajo a través de filas y columnas durante el proceso de cálculo.

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

Si nunca antes has usado una matriz, no temas. Imagine una matriz como una bandeja de cubitos de hielo con una cierta cantidad de "cubos" en los que puede colocar información. Los cubos están numerados del 1 al 12, y así es como "pones" datos en ellos.

cubitos de hielo

Puede definir fácilmente una matriz simplemente escribiendo Dim arrMyArray (12) como Integer .

Esto crea una "bandeja" con 12 espacios disponibles para que llene.

Esto es lo que podría ser un código de bucle de fila sin una matriz:

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows If Range("A" & str(x)).value< 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 del rango y realiza el cálculo de la temperatura.

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

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

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows arrMyArray(x-1) = Range("A" & str(x)).value) ActiveCell.Offset(1, 0).Select Next End Sub 

El "x-1" para señalar al elemento de la matriz solo es necesario porque el ciclo 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 combinar todos los cálculos que desee utilizando la matriz.

 Sub TempCalc() For x = 0 To UBound(arrMyArray) arrMyTemps(y) = arrMyArray(x) * 32 - 100 Next End Sub 

Este ejemplo pasa por toda la matriz de filas (UBound le da el número de valores de datos en la matriz), hace el cálculo de temperatura y luego lo coloca en otra matriz llamada arrMyTemps.

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

4. Usar demasiadas referencias

Ya sea que esté programando en Full Básico, o VBA, necesitará incluir "referencias" para acceder a ciertas características, como acceder a una base de datos de Access o escribir un resultado en un archivo de texto.

Las referencias son algo así como "bibliotecas" llenas de 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 .

excel-vba6

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

excel-vba7

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 complementos o características, o si algunos otros programadores podrían haber usado ciertas referencias en proyectos anteriores.

La razón por la que es bueno verificar esta lista es porque las referencias innecesarias desperdician recursos del sistema. Si no utiliza ninguna manipulación de archivos XML, ¿por qué mantener Microsoft XML seleccionado? si no se comunica con una base de datos, elimine Microsoft DAO. Si no escribe 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 explorar.

excel-vba8

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

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

excel-vba9

Reducir el número de referencias que utiliza 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 Ahorrar tiempo con operaciones de texto en Excel Ahorrar 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 dentro de hojas de cálculo. Estos conceptos básicos le 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.

¿Codifica en VBA? ¿Qué tipo de lecciones aprendió a través de los años que puede compartir con otros lectores aprendiendo VBA por primera vez? ¡Comparte tus consejos en la sección de comentarios a continuación!

Créditos de la imagen: Computadora de www.BillionPhotos.com a través de Shutterstock, Bandejas de cubitos de hielo coloridos de hahauk a través de Shutterstock.com

In this article