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

  • Michael Fisher
  • 0
  • 3458
  • 505
Anuncio

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 usando scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel usando scripts de VBA Nuestra plantilla de código lo ayudará a configurar hasta correos electrónicos automatizados desde Excel utilizando Collaboration Data Objects (CDO) y scripts VBA. Al escribir código simple en (VBA), es mucho más poderoso. Sin embargo, si se usa incorrectamente, VBA puede causar muchos problemas.

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

Ya sea que usted sea un gurú de VBA, que crea paneles en Excel Cree su propio panel de control meteorológico en esta clase magistral de hoja de cálculo de Google Cree su propio panel de control meteorológico en esta clase magistral de hoja de cálculo de Google ¿Desea convertir su cuenta de Google Drive en un sistema inteligente de análisis del clima? y vivir una fantasía de Star Trek? ¡Okay! , o un novato, que solo sabe cómo escribir scripts simples que hacen cálculos básicos de celdas, puede seguir técnicas de programación fáciles, que lo ayudarán a mejorar las probabilidades de escribir código limpio y libre de errores.

Comenzando con VBA

Si no ha programado en VBA en Excel antes, 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 grupo de comando 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 momento es simplemente hacer clic en el 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 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 antes he escrito una sola línea de código, voy a guiarlo para que haga su ... El primer paso importante en la mayoría de los programas, ya sea en VBA o en cualquier otro idioma, es definir sus variables.

Durante mis dos décadas de escritura de códigos, me encontré con muchas escuelas de pensamiento cuando se trata de convenciones de nombres variables y aprendí algunas cosas de la manera difícil. Estos son los consejos rápidos para crear nombres de variables:

  • Hazlos lo más cortos posible.
  • Hazlos lo más descriptivos posible.
  • Prefacio con tipo variable (booleano, entero, etc.).
  • Recuerde usar el alcance correcto (ver abajo).

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

Cuando desee utilizar las variables dentro de cualquier función dentro del módulo u objeto (lo explicaré a continuación), debe declararlo como un “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 número 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, simplemente mirando el nombre. También notará que si hay algo como una cadena que contiene el nombre de una computadora, entonces la variable se llama strComputerName.

Evite crear nombres de variables muy complicados o confusos que solo usted entienda. Facilite que otro programador lo respalde y comprenda lo que significa!

Otro error que comete la gente es dejar los nombres de las hojas como predeterminados “Hoja1”, “Hoja2”, etc ... Esto agrega más confusión a un programa. En cambio, nombra las hojas para que tengan sentido.

De esta manera, cuando se refiere al nombre de la hoja en su código VBA de Excel Uso de VBA para automatizar sesiones de Internet Explorer desde una hoja de cálculo de Excel Uso de VBA para automatizar 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 formas sorprendentes de usar el script de Visual Basic para Aplicaciones (VBA) desde cualquier aplicación que lo admita, como Word, Outlook o Excel. , te refieres a un nombre que tiene sentido. En el ejemplo anterior, tengo una hoja donde extraigo la información de la red, así 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 qué número de hoja es.

2. Romper en lugar de bucle

Uno de los problemas más comunes del programador más reciente tiene 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 que necesita saber sobre cómo vivir una vida exitosa, lo puede obtener de un programa informático. No me creas Sigue leyendo. cuando comienzan a escribir código se trata correctamente con bucles. Y dado que muchas personas que usan Excel VBA son principiantes en código, el mal bucle es 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 bucle para procesarlos todos. Los nuevos programadores a menudo quieren salir de un bucle (ya sea un bucle For o un look While) instantáneamente cuando una determinada condición es verdadera.

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 Entonces salga Para y = x + intRoomTemp Siguiente i 

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

Más a menudo que no, el código que viene después de eso “rotura” Es importante procesar, incluso la última vez a través del ciclo antes de salir. Una forma mucho más limpia y profesional de manejar las condiciones en las que desea dejar un ciclo a mitad de camino es incluir esa condición de salida en algo así como una declaración While.

Mientras que (x> = 1 Y 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 bucle For cuenta hasta 6. No es necesario incluir los comandos incómodos EXIT o BREAK a mitad del bucle.

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 presentado y hablado un poco sobre la programación orientada a objetos antes y de dónde viene su homónimo, pensé que es hora de que repase los fundamentos absolutos de la programación de una manera no específica del lenguaje. Esto ... make está tratando 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 ocasionar 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 para programar, sino que también es un asesino en 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” puedes poner información en. Los cubos están numerados del 1 al 12, y así es como “poner” datos en ellos.

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

Esto crea un “bandeja” con 12 ranuras disponibles para llenar.

Así es como se vería 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"). 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 en cada celda del rango y realiza el cálculo de temperatura.

Más adelante en el programa, si alguna vez desea realizar algún otro cálculo con 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 en la fila en su conveniente matriz de almacenamiento. Luego, más tarde, cada vez que desee realizar cálculos con esos números, ya están en la memoria y listos para comenzar..

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

los “x-1” para apuntar al elemento de matriz solo es necesario porque el ciclo For comienza en 1. Los elementos de matriz deben comenzar en 0.

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

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

Este ejemplo recorre toda la matriz de filas (UBound le da el número de valores de datos en la matriz), realiza 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 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 funcionar..

4. Usando demasiadas referencias

Ya sea que esté programando en Visual Basic completo 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 como “bibliotecas” lleno de funcionalidades que puede aprovechar, si habilita ese archivo. Puede encontrar referencias en la vista de 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 características, o si otros programadores pudieron 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 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ás 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..

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 un buen sentido, 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 Ahorrando tiempo con operaciones de texto en Excel Ahorrando 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. 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 has aprendido a través de los años que puedes compartir con otros lectores que están aprendiendo VBA por primera vez? Comparte tus consejos en la sección de comentarios a continuación!

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




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.