Ya sabes que puedes usar subrutinas en tus macros. VBA también le permite definir funciones que se pueden utilizar en sus macros. La diferencia entre funciones y subrutinas es que las funciones pueden devolver valores, mientras que las subrutinas no. Considere la siguiente macro:

Sub Macro1()

TooMany = TestFunc     If TooMany Then MsgBox "Too many columns selected"

End Sub
Function TestFunc()

TestFunc = False     If Selection.Columns.Count > 10 Then        TestFunc = True     End If End Function

La macro (Macro1) llama a la función TestFunc. Esta función devuelve el valor Falso o Verdadero, según la prueba que realice. Macro1 luego actúa sobre el valor devuelto. Observe que el nombre de la función puede aparecer en el lado derecho de un signo igual. Esto hace que las funciones sean muy poderosas y una parte importante de cualquier programa. Dentro de la función, el resultado se asigna a TestFunc, que es el nombre de la función en sí; este es el valor devuelto por la función.

Al igual que con las subrutinas, también puede pasar parámetros a sus funciones.

Esto se ilustra en la siguiente macro:

Sub Macro1()

A = 12.3456     MsgBox A & vbCrLf & RoundIt(A)

End Sub
Function RoundIt(X) As Integer     RoundIt = Int(X + 0.5)

End Function

Esta macro simple (Macro1) define un número y luego usa un cuadro de mensaje para mostrarlo y el resultado de pasar el número a la función RoundIt. La salida es 12.3456 y 12. Observe que el parámetro debe pasarse a la función entre paréntesis. También observe que la función no usa el mismo nombre de variable que se le pasó. Esto se debe a que VBA reasigna el valor de X (lo que necesita la función) para que coincida con el valor de A (lo que el programa está pasando a la función).

Lo importante que debe recordar al pasar parámetros a funciones es que su programa debe pasar el mismo número de parámetros que la función espera, y los parámetros deben ser de tipos coincidentes y en el orden correcto.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2259) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Understanding_Functions_in_Macros [Comprensión de funciones en macros].