Los procedimientos son subprogramas que permiten descomponer una tarea de programación compleja en un conjunto de tareas más breves y simples. Permiten organizar el código dentro de módulos para obtener un código de mantenimiento más simple y fácilmente reutilizable.

Tipos de procedimientos

En Excel VBA se distinguen 3 tipos

  • Procedimientos Sub (por subrutina) se llaman subprogramas o procedimientos Sub.
  • Los procedimientos Function se llaman funciones.
  • Los procedimientos Property se llaman procedimientos de Propiedad.

Puntos comunes entre procedimientos Sub y funciones

  • Ambos contienen instrucciones y métodos VBA
  • Ambos aceptan argumentos
  • Ambos se pueden llamar desde otras funciones o procedimientos Sub.

Características de las funciones

  • Devuelven un valor.
  • Se pueden utilizar desde Excel como cualquier función.

Acceso a los procedimientos

  • Para acceder a un procedimiento desde la ventana de código de un módulo, abre la segunda lista de la ventana del módulo, haz clic en el nombre del procedimiento al que deseas acceder, o recorre los procedimientos con [Ctrl][Flecha arriba] y [Ctrl][Flecha abajo].
  • Para acceder a una palabra hacer doble clic en la palabra
  • Para seleccionar una línea, sitúa el puntero del ratón a la izquierda de la línea y haz clic cuando el puntero se convierta en una flecha.
  • Para seleccionar un grupo de caracteres, usa la técnica de arrastrar y soltar o haz [Mayús] clic.
  • Para seleccionar un procedimiento completo, sitúa el puntero del ratón a la izquierda de cualquier línea del procedimiento. Cuando el puntero se transforme en una flecha, haz doble clic.
  • Para ejecutar un procedimiento, haz clic en el procedimiento que deseas ejecutar y pulse [F5] o el icono Play
  • Para eliminar un procedimiento, selecciona todo el procedimiento y pulsa [Supr].

Procedimientos Sub

Hay dos tipos de procedimientos Sub

  • Procedimientos Sub generales
  • Procedimientos Sub asociados a eventos

Un procedimiento general es un procedimiento declarado en un módulo (generalmente un módulo estándar). La llamada a este tipo de procedimiento se define explícitamente en el código.

Un procedimiento asociado a un evento es un procedimiento que se ejecuta automáticamente ante ciertos eventos de un objeto. Su nombre se forma con el nombre del objeto, seguido del guión bajo "_" y del nombre del evento (ej.: Workbook_Open). La llamada a estos procedimientos es implícita, es decir, el procedimiento se ejecuta automáticamente cuando se produce el evento asociado.

Ejm

El siguiente procedimiento general pide al usuario que confirme su deseo de abandonar la aplicación, y sale de Excel si el usuario responde que Sí. Este código se puede ejecutar con un botón de comando o una opción de menú que permita abandonar la aplicación.

Private Sub Terminar()
If MsgBox("¿Desea salir del programa?", _
vbQuestion + vbYesNo) = vbYes Then
Application.Quit
End If
End Sub

Ejm2

El siguiente procedimiento asociado a un evento abre automáticamente el libro Ventas.xlsx cuando se abre el libro Resumen.xlsx. Este procedimiento está asociado al evento Open del objeto Workbook y se encuentra en el módulo ThisWorkbook del libro Resumen.xlsx.

Private Sub Workbook_Open()
' Abre el libro Ventas.xlsx
Workbooks.Open Filename:="C:\VENTAS\VENTAS.xlsx"
' Activa el libro Resumen
Windows("RESUMEN.xlsx").Activate
End Sub

Procedimientos Function

Los procedimientos Function, llamados comúnmente funciones, devuelven un valor resultado de un cálculo. El valor se devuelve a través del nombre de la función. VBA incluye numerosas funciones integradas, tales como las usadas en cálculos con fechas (day, week, year, format...). Además de estas funciones integradas, podemos crear nuestras propias funciones personalizadas.

Ejm

La siguiente función pide al usuario que confirme su deseo de abandonar la aplicación, y devuelve TRUE si el usuario responde que sí, y FALSE en caso contrario

Function Terminar() As Boolean
If MsgBox("¿Desea salir del programa?", _
vbQuestion + vbYesNo) = vbYes Then
Terminar = True
Else
Terminar = False
End If
End Function

Declaración de procedimientos

Sintaxis de un procedimiento Sub

La sintaxis es la siguiente:

[Private | Public | Friend] [Static] Sub NomProc
([lista de argumentos])
<secuencia de instrucciones>
End Sub

Sintaxis de un procedimiento Function

[Private | Public | Friend] [Static] Function
NomProc ([lista de argumentos]) [As <Type>]
<secuencia de instrucciones>
End Function

Para crear un procedimiento Sub o Function, se deben respetar los siguientes pasos:

  • Determina el alcance del procedimiento
  • Declara el procedimiento según su tipo con la palabra clave Sub o Function, seguida del nombre del procedimiento.
  • Defina los argumentos que se deban pasar como parámetros al procedimiento e indícalos entre paréntesis después del nombre del procedimiento.
  • En el caso de una función, si es necesario, indica el tipo del valor devuelto después de la palabra clave As.
  • Escribe el código que permita efectuar la operación deseada. Si es necesario, usa Exit Sub o Exit Function para salir del procedimiento. En el caso de una función, asigna el resultado al nombre de la función.
  • Finaliza el procedimiento con End Sub o End Function.