Cómo crear procedimientos en VBA Excel

Los procedimientos son las unidades de código más pequeñas que se pueden ejecutar. Los puedes identificar porque siempre comienzan y terminan con las mismas instrucciones:

  • Sub – End Sub
  • Function – End Function
  • Property – End Property

Puedes crear los procedimientos en los objetos Hoja, ThisWorkbook, Módulos y UserForms. Mi recomiendación es que utilices siempre módulos estándar para almacenarlos, siempre que no sean procedimientos relacionados con eventos, para lo cual, deberás guardarlos en el objeto que corresponda.

Así que antes de crear un procedimiento, primero debes saber crear o eliminar un módulo:

Cómo insertar y eliminar un módulo VBA

Para agregar un módulo al proyecto de VBA, sólo tienes que ir al menú Insertar y hacer clic en Módulo. Automáticamente se creará una carpeta (Módulos) donde aparecerá el módulo por defecto Módulo1. Este nombre puedes modificarlo en cualquier momento en la ventana Propiedades. Te aconsejo que modifiques el nombre antes de crear cualquier procedimiento. Si ya existen procedimientos en otros módulos que hacen referencia al nuevo módulo y luego se cambia el nombre, VBA no será capaz de encontrar la ubicación del procedimiento al que se llama.

insertar-un-modulo-vba

Para quitar un módulo del proyecto de VBA, haz clic con el botón derecho del ratón en el módulo a eliminar y selecciona Quitar Módulo1.

A continuación aparecerá un cuadro de diálogo que te preguntará si deseas exportar el contenido antes de eliminarlo. Pulsa en No y el módulo se eliminará.

quitar-modulo-vba-excel

Cómo crear un procedimiento Sub

Para crear un procedimiento Sub puedes hacerlo de dos formas: Escribiéndolo directamente en la ventana de código o haciendo clic en el menú Insertar y pulsando Procedimiento. En el cuadro de diálogo que aparece, selecciona Sub.

Para insertar el procedimiento a mano:

  1. Accede al Editor de VBA e inserta un nuevo módulo. En la ventana Código, escribe la palabra Sub y, a continuación introduce el nombre de la macro, por ejemplo Prueba_Macro.
  2. Pulsa Intro. VBA agregará después del nombre un par de paréntesis y debajo se insertará la instrucción End Sub.
  3. Entre las dos líneas, escribe el código a ejecutar, por ejemplo:
MsgBox "Prueba de introducción de una macro", , "Ayuda Excel"
insertar-procedimiento-sub-vba

Así de fácil.

Para introducir el mismo procedimiento mediante el menú:

  1. Pulsa en el menú Insertar – Procedimiento. Se abrirá un cuadro de diálogo en el que debes seleccionar algunas opciones:  el tipo del procedimiento, el ámbito donde actúa y decidir si las variables que se van a declarar se utilizarán sólo de forma local.
  2. Al pulsar Intro aparecerán las instrucciones de inicio y cierre del procedimiento.
insertar-procedimiento-automatico-vba-excel

Cómo crear un procedimiento Function

Al igual que los procedimientos Sub, los procedimientos Function se pueden crear en cualquier objeto contenedor de código. También es algo sencillo de hacer, pero para verlo todavía más claro, te lo muestro en un ejemplo en el que te enseñaré a crear una función para calcular el perímetro de un pentágono:

  1. Inserta un módulo nuevo. En la ventana Código escribe Function y a continuación el nombre de la función: por ejemplo perimetro_pentagono (Lado).
  2. Pulsa Intro para que VBA agregue la instrucción del final del procedimiento (End Function).
  3. Entre las dos líneas, escribe el siguiente código, que será el que calcule el perímetro:
y = lado * 5
perimetro_pentagono = y
insertar-procedimiento-function-excel

Como te comenté aquí, puedes utilizar la instrucción Exit Function para salir de la función antes de que finalice. Pero… ¿para qué vas a querer salir de la función?

Imagina, por ejemplo, que si el argumento introducido (lado) es una letra o un número negativo, sería imposible calcular el resultado. Para evitar la que la función dé un error habría que salir de ella cuando se detecten estos valores. Observa el siguiente código:

Function perimetro_pentagono(Lado)
If Lado <= 0 Then
MsgBox “Ingresar un número mayor que 0”
Exit Function
Else
P = Lado * 5
Perimetro_pentagono = P
End If
End Function

Al igual que los procedimientos Sub, las funciones también pueden ser declaradas como públicas o privadas.

Resumiendo…

Ahora ya sabes dónde y cómo crear tus propios procedimientos Sub y Function. Recuerda siempre incluir comentarios en ellos para recordar más adelante cómo funcionan (te aseguro de que te olvidarás con el tiempo).

Respuestas

  1. no es por ser jodido, pero… seria importante tambien hablar de la palabra reservada “CALL” para llamar al modulo.

    por cierto, bonito blog
    saludos.

    1. Anon, no he hablado de ella por dos razones:

      – La primera es que éste es un artículo donde hablo de la sintaxis de los procedimientos, no de cómo invocarlos.

      – La segunda es que la palabra que indicas (Call) es opcional si conoces el nombre del procedimiento.

      En breve haré mención a la llamada a procedimientos en otro artículo donde trataré más profundamente el tema.

  2. Hola Sergio. Espero que te encuentres bien.

    Mira, siempre he tenido y tengo todavía muchas ganas de aprender VBA. Tengo muchas dudas, preguntas, etc. que me rondan…….. Pero siempre he tenido la ignorancia o duda, por así decirlo. En que caso usar los modulos? Que declaro en ellos? y por último, para no quitarte mas de tu tiempo. En que caso se declaran las variables publicas o privadas?
    Esperando una buena acogida de tú parte Sergio, se despide afectuosamente

    Danilo Martinez

    Rancagua, enero 25 del 2017

    Chile

    1. Hola, Danilo:

      En primer lugar, cualquier código VBA debe ir dentro de un módulo, ya sea el módulo de un objeto como las hojas o el propio libro, o en un módulo independiente.

      Supongo que te referirás al módulo independiente.

      Normalmente suelo colocar en módulos independientes los procedimientos que no están ligados a un evento (de hoja o de libro), es decir, el 95% del código que escribo.

      Debes declarar las variables como públicas cuando vayas a utilizarlas en cualquier parte del proyecto. Si esto no va a ser así, te sugiero declararlas en el ámbito adecuado. Aquí puedes ver ejemplos de declaraciones de variables públicas y privadas.

  3. Hola Sergio, gusto en saludarte.

    Excelente tu bloc, me ha ayudado muchísimo, pero estuve leyendo algunos conceptos en la página de Microsoft y en uno de los ejemplos en un procedimiento Sub colocaron entre los paréntesis una palabra. por acá te dejo el ejemplo:

    Sub MultiBeep(numbeeps)
    For counter = 1 To numbeeps
    Beep
    Next counter
    End Sub

    Si tienes idea de porqué colocaron ese texto entre los paréntesis te agradecería mucho me lo explicases, de antemano muchas gracias.

    Saludos!

    1. Hola Leonardo!
      Esa palabra entre paréntesis es la variable que necesita la macro para ejecutarse correctamente. Es un parámetro que viene determinado en otro lugar.

Los comentarios están cerrados.