Generador de procedimientos

El Constructor de procedimientos (ALT P) genera rápidamente un procedimiento con una configuración específica (Actualización de pantalla, etc.). Puede guardar la configuración predeterminada del procedimiento para ahorrar tiempo al escribir nuevos procedimientos.

Salida:

procedure builder output
Casos prácticos
  • Cree rápidamente subprocedimientos o funciones con la configuración que desee.
  • Guarde la configuración para utilizarla en el futuro.

Guardar ajustes como predeterminados

Para guardar la configuración actual como predeterminada (para facilitar el acceso en el futuro), haga clic en la parte inferior derecha del constructor:

procedure builder save settings

Descripción de los ajustes

A continuación encontrará una descripción de los ajustes disponibles con el Generador de Procedimientos.

Funciones y subfunciones

Cuando se codifica (VBA o cualquier otro lenguaje) típicamente el código se almacena en procedimientos. Los procedimientos son sólo bloques de código que pueden ser llamados (ejecutados). Probablemente esté familiarizado con el concepto de grabar una macro en Excel. Cuando graba una macro, en realidad está creando un procedimiento VBA: Subrutinas (Subs) y Funciones. Las subrutinas y las funciones tienen tres diferencias principales:

  1. Las funciones devuelven un valor
  2. Las funciones pueden usarse en fórmulas de Excel
  3. Las funciones sólo pueden llamarse a través de otros procedimientos (o fórmulas de Excel). No puede asignar una función a un botón de comando ni acceder a ellas a través de la lista de macros.

Las Funciones y Subs completadas tienen el siguiente aspecto:

example procedures

Debido a que las Funciones devuelven valores, debe decirle a VBA qué tipo de valor esperar. Observe que arriba declaramos que la Función es un valor Booleano (TRUE o FALSE):

Función Ex_Función() As Boolean

En su lugar, puedes declarar una Función como un tipo Variante que aceptará todos los tipos de valores:

Función Ex_Función() As Variant

El Constructor de Procedimientos establecerá todas las Funciones como de tipo Variant.

Alterna entre Sub y Function aquí:

procedure builder sub function

Nombre y descripción

Es importante nombrar los procedimientos de forma descriptiva y añadir comentarios para describir lo que hace un procedimiento. Tu código puede tener sentido para ti ahora, pero puede no tenerlo para otra persona (incluido tu yo futuro). Es una buena práctica añadir comentarios a cada procedimiento que crees.

Añade nombres y comentarios aquí:

procedure builder name description

Privado frente a público (Avanzado)

Por defecto, los procedimientos son accesibles desde la lista de macros (sólo subs), y pueden ser llamados por cualquier otro procedimiento. La declaración Private oculta el procedimiento de la lista de macros y establece que el procedimiento sólo sea accesible desde el módulo de código actual (nota: técnicamente se puede evitar esto utilizando Application.Run).

Para hacer la declaración Private, añada Private antes del nombre del procedimiento:

Private Sub Ex_Sub

También puede declarar módulos enteros como «privados». Añadiendo Private Module en la parte superior de su módulo de código:

Módulo Privado

Cuando se marca un módulo entero como privado se ocultan todos los procedimientos de la lista de macros, pero pueden ser fácilmente referenciados desde otros módulos.

Defina Público o Privado aquí:

vba code module

Ajustes

Todas las aplicaciones (Excel, PowerPoint, Outlook, etc.) tienen configuraciones a nivel de aplicación. Algunas de estas configuraciones son muy importantes para la codificación VBA. Importante: Las configuraciones a nivel de aplicación son independientes de los procedimientos. No se «restablecerán» manualmente después de que finalice un procedimiento. En su lugar, deben cambiarse manualmente de nuevo cuando se desee.

El Generador de Procedimientos le permite establecer los siguientes ajustes a nivel de aplicación:

Nota: «Mostrar cuadro de mensaje después de completar» no es una configuración de la aplicación, lo discutiremos en la siguiente sección.

Desactivar ScreenUpdating – La pantalla no se actualizará mientras se ejecuta el procedimiento. Esto puede reducir drásticamente el tiempo de procesamiento.

Desactivar CálculosAutomáticos – Esta es una configuración de Excel que desactiva los Cálculos Automáticos. Esto puede acelerar drásticamente el tiempo de procesamiento.

Desactivar Alertas – Los mensajes de advertencia y los avisos no se mostrarán al usuario. En su lugar, VBA procesará la acción por defecto.

Deshabilitar Eventos – Los eventos son «disparadores» que pueden hacer que se ejecute código (Ej. libro de trabajo abierto, hoja activada, cambio de celda, etc.). Si su libro de trabajo tiene eventos, es probable que desee desactivar los eventos mientras se ejecuta el código para evitar comportamientos no deseados (incluyendo bucles sin fin).

Cuadro de mensaje al finalizar el procedimiento – Para los procedimientos que tardan más de unos segundos en ejecutarse, a menudo tiene sentido mostrar un cuadro de mensaje al finalizar. Esto alerta al usuario de que el procedimiento ha terminado de ejecutarse. Para nuestros clientes, generalmente configuramos alertas de cuadro de mensaje para todos los procedimientos que tardan más de 15 segundos en ejecutarse.

Manejo de Errores – Por defecto, VBA detendrá la ejecución del código si encuentra un error y pedirá al usuario que «Depure» el código. Esto es deseable durante las pruebas/desarrollo. Sin embargo, hay muchos escenarios donde es deseable manejar los errores de otras maneras.

El manejo de errores se define a nivel de procedimiento. No es un ajuste a nivel de aplicación. Por lo tanto, cualquier procedimiento que necesite un tratamiento de errores distinto al predeterminado necesita una declaración de tratamiento de errores:

  • On Error Resume Next: VBA continúa saltándose la(s) línea(s) que contiene(n) errores y procede con la siguiente línea de código.
  • En Caso de Error Ir a Manej_Error: En caso de error, VBA «pasará» a una sección definida del procedimiento (‘Error_Handle’ en este caso). Esto es útil para mostrar un cuadro de mensaje en caso de error, repetir/intentar de nuevo, u omitir una sección de código.
  • On Error Goto End: Esto es en realidad lo mismo que la configuración anterior, excepto que aquí «ir a» va a una sección al final del procedimiento.

Para restaurar el tratamiento de errores por defecto, introduzca lo siguiente:

En Error Goto 0

Esto es deseable durante las pruebas/desarrollo. Sin embargo, hay muchos escenarios donde es deseable manejar los errores de otras maneras.

Nota: Es una «mejor práctica» evitar permitir errores intencionalmente y usar el manejo de errores para procesarlos. En su lugar, debe utilizar código más inteligente para evitar generar errores de VBA en primer lugar.

Constructor de Procedimientos: Manejo de Errores:

Comienza a automatizar Excel