Procedimientos en VBA: Funciones y Subs

Un procedimiento en VBA es el nombre genérico para referirnos a un bloque contenido de código que realiza una tarea.

En VBA se utilizan 3 tipos de procedimientos: Los procedimientos Sub, las funciones y las propiedades. En este articulo nos enfocaremos solamente en los dos primeros tipos de procedimientos.

Cuando en el editor de Visual Basic (VBE), en la barra de menú seleccionamos:

Insertar>Procedimiento

aparece la siguiente caja de dialogo que permite dar un nombre al procedimiento, seleccionar el tipo de procedimiento y el ámbito del procedimiento.

procedimiento-1

 

Procedimientos Sub

Los procedimientos Sub pueden ser creados de dos formas:

  1. Grabando las acciones que se ejecutan cuando se interactúa con la hoja de calculo, a este tipo de procedimientos se les llama macros.
  2. Introduciendo el código en el editor de Visual Basic (VBE).

Las instrucciones que integran el Sub se encuentran dentro de un contenedor de código (Shell). Este contenedor inicia con el comando Sub seguido del nombre del procedimiento y paréntesis para indicar los parámetros a utilizar, si se requieren. El contenedor cierra con el comando End Sub.

La sintaxis es:

Sub Nombre_Procedimiento([ByVal or ByRef]parametro1 [as Type], ([ByVal or ByRef]parametro2[as Type],  ……….)

Codigo del procedimiento

End Sub

Lo que va entre [ ] es opcional, si no se coloca nada se toman los valores por defecto.

Adelantándonos un poco siempre se resalta que la diferencia fundamental entre una función y un procedimiento Sub es que las funciones devuelven un valor, sin embargo los Sub no.

En este ejemplo trataremos de explicar este concepto. Vamos a crear un Sub para calcular el volumen de un cilindro, creando un Sub llamado VOL_CIL.

procedimiento-2

Vemos que VOL_CIL tiene dos parámetros: r  y h, ambas con tipo de doble precisión (Double).

Al tratar de correr este sub no sucede nada, para que corra tenemos que llamarlo desde otro procedimiento y pasar los argumentos a los parámetros.

Para eso vamos a crear un botón de comando, que al hacer clic, llame al Sub VOL_CIL y le suministre los argumentos a los parámetros r y h. Para hacer eso vamos a la cinta de menú y hacemos clic en DESARROLLADOR y dentro de esta seleccionaremos: Insertar>ControlesActiveX y allí buscaremos el icono para crear un botón de comando.

procedimiento-3

Creamos el botón anclando y arrastrando para crear una cajita. hacemos doble clic sobre la caja y estos nos lleva al VBE. Aquí introduciremos el código que se ejecutara al hacer clic en botón.

El código del botón es el que se muestra a continuación:

Private Sub CommandButton1_Click()
VOL_CIL 2, 4

End Sub

Al hacer clic, se ejecuta el Sub CommandButton1_Click(), el cual simplemente hace un llamado al Sub VOL_CIL y le suministra los argumentos a los parámetros r y h. Y el resultado es la aparición de una caja de mensaje (MsgBox) con el resultado.

procedimiento-4

Funciones, Procedimientos Function

A diferencia de los procedimientos Sub, las funciones (Function) solo pueden ser creadas en el editor de Visual Basic.

Una función es un bloque de código que realiza una tarea, que involucra por lo general lectura de datos, cálculos y retorno de resultados. Puede incluir códigos para toma de decisiones y ciclos repetitivos.

Las instrucciones que integran una función se encuentran dentro de un contenedor de códigos (Shell). La sintaxis es:

[public][private]Function Nombre(parametro1 [as Type], Parametro2 [as Type], …….)[as Type]

Código de la función

Nombre=resultado

End Function

lo indicado entre [] es opcional. La ultima línea de código antes del End Function debe contener el nombre de la función con la asignación del resultado a retornar, ya sea a la hoja, o a una variable en otro procedimiento.

Los procedimientos Function creados en el VBE pueden ser utilizados directamente en la hoja de calculo, como cualquier otra función de Excel, o también pueden ser llamadas por otros procedimientos en VBA.

Vamos a mostrar el código de una función que realiza la misma operación del procedimiento Sub que vimos en el ejemplo anterior. Vamos a calcular el volumen de un cilindro, y el código es el que se muestra a continuación:

 procedimiento-5

Como se observa la ultima línea de código tiene el nombre de la función al cual se le asigna el resultado del calculo, y que luego es mostrado en la hoja de calculo o pasado a una variable en otro procedimiento.

procedimiento-6

En la figura se observa como en la celda C4 se ha introducido la función que hemos creado, la cual asigna los valores 2  y 4 a los parámetros r y h respectivamente. la función devuelve directamente un valor en la celda donde es colocada.

En el siguiente ejemplo vamos a llamar a la función Cilindro_Vol dese una función llamada Cilindro_Peso.

procedimiento-7

La cual también podemos utilizar en la hoja de cálculo o ser llamada desde otro procedimiento.

procedimiento-8

Referencias Bibliográficas

Etheridge, D.: Excel 2007 Programming, Your visual blueprint for creating interactive spreadsheets. Wiley Publishing, Inc. Indiana, 2007.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s