En excel VBA se programa de forma modular, donde cada módulo puede contener funciones y subrutinas. Estas se diferencian principalmente en que las subrutinas no devuelve un valor, sólo realizan operaciones sobre un conjunto de datos o realizan alguna acción en particular, mientras que las funciones si devuelven un valor o resultado, es por ello que cuando se declara una función que debe declararse que tipo variable será el valor que devuelve.

Una función de excel VBA se declara como:
[Public o Private] Function NombreFuncion(Param1 as tipodato1, Param2 as tipodato2,…)

Donde los términos entre paréntesis indican es opcional, si no se escribe nada la función se toma como pública y esta puede usarse en cualquier parte del módulo de Excel VBA. Por ejemplo definiendo la siguiente función:

[code language=”vb”]
Function RaizSuma (x as Integer, y as Integer) as Double
RaizSuma = (x^2+y^2)^0.5
End Function
[/code]

Entonces la función RaizSuma calcula la raiz cuadrada de los números “x” e “y” declarados como argumentos del tipo entero, si no se ingresan los parámetros adecuados al llamar a la función se obtendrá un error. También se puede notar que el resultado de esta función es un valor del tipo Double porque tendrá muchos decimales probablemente. También hay que notar que el valor que devuelve la función se le asigna al nombre de la función en este caso RaizSuma. Puedes cargar este ejemplo en un módulo de excel VBA, y luego llamarlo en una celda de excel para que pruebes como funciona. Para usar una función dentro de otra función o subrutina, se hace simplemente por ejemplo:

x = RaizSuma(5,4) ‘x debe ser de tipo double para que no haya error

Una subrutina se declara de manera similar:
[Public o Private] Sub NombreSubrutina(Param1 as tipodato1, Param2 as tipodato2,…)

En este caso vemos que la subrutina no devuelve ningún valor en particular, si dentro de ella usas una variable que has definido como pública hará cambios sobre esta, pero no devuelve ningún resultado. Se usa más frecuente para realizar acciones Por ejemplo:

[code lang=”vb”]
Sub Mensaje (x as integer)
If x < 10 Then
Msgbox "Valor menor que diez" Else
Msgbox "Valor mayor o igual a diez"
End If
End Sub
[/code]

Una Subrutina se llama de la siguiente forma:

Call Mensaje (12)

Devolverá el mensaje: “Valor mayor o igual a diez” en una ventana.

Eso es todo por hoy, saludos.

Funciones y Subrutinas en Excel VBA

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *