4 Errores que puede evitar la hora de programar macros de excel con vba

Microsoft Excel es una herramienta de análisis de datos muy capaz ya, pero con la capacidad de automatizar tareas repetitivas con macros escribiendo código simple en (VBA), que es mucho más potente. Sin embargo, se usa incorrectamente, VBA puede causar muchos problemas.Cómo enviar correos electrónicos desde una hoja de Excel VBA mediante secuencias de comandosCómo enviar correos electrónicos desde una hoja de Excel VBA mediante secuencias de comandosEn el pasado, he usado correo electrónico mucho en mis trabajos por lotes y otros scripts automatizados, al igual que he descrito en artículos anteriores. Estos son ideales para esos momentos en los que tiene una secuencia de comandos ...Lee mas

Incluso si usted no es un programador, VBA ofrece funciones sencillas que le permiten añadir algunas funciones realmente impresionante a sus hojas de cálculo, por lo que no se va todavía!

Tanto si eres un gurú de VBA, que crea cuadros de mando en Excel, o un novato, que sólo sabe cómo escribir scripts simples que hacen cálculos básicos de células, puede seguir las técnicas de programación fácil, que le ayudarán a mejorar las probabilidades de escribir código limpio y libre de errores.

Introducción a VBA

Si no se ha programado en VBA en Excel antes, permitiendo a las Herramientas para desarrolladores de hacerlo es en realidad bastante fácil. Sólo tiene que ir a Archivo gt; opciones y entonces Personalizar la cinta. Basta con mover el Desarrollador grupo de mando del panel izquierdo hacia el lado derecho.

Excel-VBA1

Asegúrese de que la casilla de verificación está activada, y ahora la ficha Programador aparecerá en el menú de Excel.

Excel-VBA2

La forma más fácil de conseguir en la ventana del editor de código en este momento es sólo para hacer clic en el Ver código botón debajo controles en el menú de desarrollador.

1. Los nombres de variables Horribles

Ahora que estás en la ventana de código, es el momento de comenzar escribir código VBA. El primer paso importante en la mayoría de los programas, ya sea en VBA o cualquier otro idioma, es la definición de las variables.Cómo usted puede hacer su propia aplicación sencilla con VBACómo usted puede hacer su propia aplicación sencilla con VBAPara aquellos de ustedes que realmente aman a ser capaz de escribir su propia aplicación, pero nunca han escrito una sola línea de código antes, voy a caminar a través de hacer su muy ...Lee mas

A lo largo de mi par de décadas de escritura de código, me encontré con muchas escuelas de pensamiento cuando se trata de las convenciones de denominación de variables y aprendido algunas cosas de la manera difícil. Estos son los consejos rápidos para la creación de nombres de variables:

  • Que sean lo más cortos posible.
  • Que sean lo más descriptivo posible.
  • Prefacio con el tipo de variable (booleano, entero, etc ...).
  • Recuerde que debe utilizar el alcance adecuado (véase más adelante).

He aquí una muestra de captura de pantalla de un programa que utilizo a menudo para hacer WMIC Windows llama desde Excel para recopilar información de PC.Cómo ver toda la información de la computadora utilizando un simple script VBA ExcelCómo ver toda la información de la computadora utilizando un simple script VBA ExcelExcel y 10 minutos de trabajo le dará información más detallada acerca de la computadora que usted pensó siempre posible. Suena demasiado bueno para ser verdad? Eso es Windows, si usted sabe cómo usarlo.Lee mas

Excel-vba3

Cuando se desea utilizar las variables dentro de cualquier función dentro del módulo u objeto (Voy a explicar esto más adelante), entonces tiene que declarar como variable “público” anteponiendo a la declaración de Público. De lo contrario, las variables quedan declarados por prologando con la palabra Oscuro.

Como se puede ver, si la variable es un número entero, que está precedido de int. Si se trata de una cadena, entonces str. Esto ayuda más adelante mientras se está programando ya que siempre sabrá qué tipo de datos contiene la variable, simplemente echando un vistazo en el nombre. También se dará cuenta de que si hay algo así como una cadena que contiene un nombre de equipo, entonces la variable se llama strComputerName.

Evitar hacer nombres de variables muy complicadas o confusas que sólo se entiende. Hacer que sea más fácil para otro programador que vienen detrás de ti y entender lo que significa todo esto!

Otro error que la gente está dejando nombres de hoja como predeterminado “Sheet1”, “Hoja2”, etc ... Esto añade más confusión a un programa. En su lugar, el nombre de las hojas de modo que tengan sentido.

Excel-vba4

De esta manera, cuando se hace referencia al nombre de la hoja de su código de Excel VBA, usted se refiere a un nombre que tenga sentido. En el ejemplo anterior, tengo una hoja donde me tire en la información de la red, por lo que llamo la hoja de “Red”. Ahora en el código, cada vez que quiero hacer referencia a la hoja de la red, que puede hacerlo rápidamente sin levantar la hoja de qué número es.El uso de VBA para automatizar Internet Explorer sesiones desde una hoja de cálculo de ExcelEl uso de VBA para automatizar Internet Explorer sesiones desde una hoja de cálculo de ExcelSu integración con Windows permite el control de Internet Explorer en un número de maneras sorprendentes utilizando Visual Basic para aplicaciones guión (VBA) desde cualquier aplicación que lo soporta, como Word, Outlook o Excel.Lee mas

2. Romper En lugar de bucle

Uno de los más problemas comunes nuevo programador tiene cuando empiezan a escribir código se trata adecuadamente con bucles. Y ya que muchas personas que utilizan Excel VBA son muy novatos de código, la mala bucle es una epidemia.6 hábitos de vida que la programación podría enseñar a usted hoy6 hábitos de vida que la programación podría enseñar a usted hoyTodo lo importante que lo que necesita saber acerca de vivir una vida exitosa, se puede obtener de un programa de ordenador. No me creen? Leyendo.Lee mas

Bucle es muy común en Excel porque los datos a menudo se va a procesar los valores abajo una fila o una columna, por lo que necesita de bucle para procesar todos ellos. Los nuevos programadores a menudo quieren romper acaba de salir de un bucle (ya sea un bucle o una mirada bien) al instante cuando una determinada condición es verdadera.

Excel-VBA5

Vídeo: Curso Práctico Programación VBA Excel 2007: Control de Errores. Sesión 08. Vídeo 1 de 1.

Puede pasar por alto la complejidad del código de arriba, solo que señalar que dentro del interior IF, hay una opción para salir del bucle For si la condición es verdadera. Aquí está un ejemplo más simple:

para x = 1 Para 20Si x = 6 A continuación, la salida Fory = x + intRoomTempNext i

Los nuevos programadores toman este enfoque porque es fácil. Cuando se produce una condición de que usted está esperando con el fin de dejar un bucle, la tentación de saltar simplemente inmediata fuera de él es fuerte, pero no hacerlo.

Más a menudo que no, el código que se produce después de que la “ruptura” es importante para el proceso, incluso la última vez a través del bucle antes de salir. Una manera mucho más limpio y más profesional para manejar las condiciones en las que desea dejar un bucle a medio camino, es sólo para incluir esa condición de salida en algo así como una declaración bien.

Mientras (xgt; =1 Y xlt; =20 Y xlt;gt;6)para x = 1 Para 20y = x + intRoomTempNext iWend

Esto permite un flujo lógico de su código, con la última carrera a través de cuando x es 5, y luego terminamos de forma elegante una vez que el bucle For cuenta hasta 6. No hay necesidad de incluir SALIDA incómoda o PAUSA comandos de medio lazo.

3. No se usan matrices

Otro error interesante que nuevos programadores de VBA que está tratando de procesar todo el interior de numerosos bucles anidados que se filtran a través de las filas y columnas durante el proceso de cálculo.Los fundamentos de Programación de Computadoras 101 - Variables y tipos de datosLos fundamentos de Programación de Computadoras 101 - Variables y tipos de datosDespués de haber introducido y habló un poco sobre programación orientada a objetos antes y donde su homónimo viene, pensé que es hora de ir a través de los fundamentos absolutos de la programación de una manera no específica del idioma. Esta...Lee mas

Si bien esto puede funcionar, sino que también podría dar lugar a importantes problemas de rendimiento, si usted tiene constantemente para realizar los mismos cálculos con los mismos números en la misma columna. Bucle a través de esa columna y extraer los valores cada vez no sólo es tedioso para el programa, que es un asesino en su procesador. Una manera más eficiente para manejar largas listas de números es utilizar una matriz.

Si usted nunca ha usado una matriz antes, no tienen miedo. Imagínese una matriz como una bandeja de cubitos de hielo con un cierto número de “cubos” que puede poner información en. Los cubos están numerados del 1 al 12, y así es cómo se “pone” los datos en ellos.

Vídeo: Curso de Macros y Programación con VBA en Excel 2016. Primeros Pasos con VBA. Emisión 0003.

icecube bandejas

Se puede definir fácilmente una matriz con tan sólo escribir Dim arrMyArray (12) As Integer.

Esto crea una “bandeja” con 12 ranuras disponibles para que usted pueda llenar.

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

Sub Prueba1()Dim x As IntegerintNumRows = Distancia("A2", Distancia("A2").Fin(xlDown)).Rows.CountRange("A2").SelectFor x = 1 Rango intNumRowsIf Para("UN" & str(x)).valor lt; 100 entoncesintTemp = (Distancia("UN" & str(x)).valor) * 32 - 100End IfActiveCell.Offset(1, 0).SelectNextEnd Sub

En este ejemplo, el código está procesando a través de cada célula en el rango y realizar el cálculo de la temperatura.

Más adelante en el programa, si alguna vez desea realizar alguna otra cálculo sobre estos mismos valores, que tendría que duplicar este código, el proceso a través de todas estas células, y llevar a cabo su nuevo cálculo.

Ahora, si en cambio, utiliza una matriz, entonces se puede almacenar los 12 valores de la fila en la matriz de almacenamiento conveniente. Luego, más tarde, cada vez que desee ejecutar cálculos en contra de esos números, que ya en la memoria y está listo para ir.

Sub Prueba1()Dim x As IntegerintNumRows = Distancia("A2", Distancia("A2").Fin(xlDown)).Rows.CountRange("A2").SelectFor x = 1 Para intNumRowsarrMyArray(x-1) = Distancia("UN" & str(x)).valor)ActiveCell.Offset(1, 0).SelectNextEnd Sub

sólo es necesario el “x-1” para señalar al elemento de la matriz debido a que el bucle For comienza a 1. Los elementos de matriz que empezar a 0.

Pero una vez que tenga la matriz de todos cargados con los valores de la fila, más tarde en el programa que acaba puede azotar juntos cualquier cálculo que desea mediante el uso de la matriz.

Sub TempCalc()para x = 0 Para UBound(arrMyArray)arrMyTemps(y) = arrMyArray(x) * 32 - Sub 100NextEnd

En este ejemplo se pasa a través de toda la matriz fila (UBound le da el número de valores de datos en la matriz), que hace el cálculo de la temperatura, y después se pone en otra matriz llamada arrMyTemps.

Se puede ver cómo mucho más simple el segundo código de cálculo es. Y desde este punto en adelante, cada vez que desee realizar más cálculos en el mismo conjunto de números, la matriz ya está pre-cargado y listo para funcionar.

4. El uso de demasiadas referencias

Ya sea que esté programando en toda regla Visual Basic o VBA, tendrá que incluir “referencias” para acceder a determinadas funciones, como el acceso a una base de datos, o escribiendo la salida a un archivo de texto.

Las referencias son una especie de “bibliotecas” llenos de funcionalidad que se puede aprovechar, si habilita ese archivo. Puede encontrar referencias en vista de desarrollador haciendo clic en Herramientas en el menú y luego hacer clic en referencias.

Excel-VBA6

Qué encontrará en esta ventana son todas las referencias seleccionadas para el proyecto actual de VBA.

Excel-vba7

En mi experiencia, las selecciones aquí pueden cambiar de una instalación de Excel a otro y de un PC a otro. Mucho depende de lo que otras personas han hecho con Excel en este equipo, si se añaden o se habilitan ciertos complementos o funciones, o si algunos otros programadores podrían haber utilizado ciertas referencias en proyectos anteriores.

La razón por la que es bueno para comprobar esta lista es porque los recursos del sistema de residuos referencias innecesarias. Si no se utiliza ningún tipo de manipulación de archivos XML, entonces ¿por qué mantener a Microsoft XML seleccionado? si no se comunica con una base de datos, a continuación, quitar Microsoft DAO. Si no se escribe la salida a un archivo de texto, a continuación, quitar Microsoft Scripting Runtime.

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

Excel-vba8

Una vez seleccionada, podrá ver todos los objetos y funciones disponibles, que puede hacer clic para aprender más acerca.

Por ejemplo, cuando hago clic en la biblioteca de DAO, rápidamente se hace evidente que esto es todo acerca de la conexión y comunicación con las bases de datos.

Excel-vba9

La reducción del número de referencias que utiliza en su proyecto de programación es sólo sentido común, y ayudará a que su funcionamiento general de la aplicación de manera más eficiente.

Programación en Excel VBA

La idea de la realidad la escritura de código en Excel asusta a mucha gente, pero este miedo realmente no es necesario. Visual Basic para Aplicaciones es un lenguaje muy sencillo de aprender, y si se siguen las prácticas comunes básicos mencionados anteriormente, se asegurará de que su código es limpio, eficiente, y fácil de entender.Ahorro de tiempo con operaciones de texto en ExcelAhorro de tiempo con operaciones de texto en ExcelExcel puede hacer magia con los números y caracteres que puede manejar igualmente bien. Este manual demuestra cómo analizar, convertir, reemplazar y editar texto en hojas de cálculo. Estos elementos básicos se permitirá realizar transformaciones complejas.Lee mas

¿Usted código en VBA? ¿Qué clase de lecciones ha aprendido a través de los años que se puede compartir con otros lectores de aprendizaje VBA por primera vez? Comparte tus consejos en la sección de comentarios!

Artículos Relacionados