La diferencia entre una función y un sub en Excel VBA es que una función puede devolver un valor mientras que un sub no puede. Las funciones y los subs se vuelven muy útiles a medida que aumenta el tamaño del programa.

Función

Si desea que Excel VBA realice una tarea que devuelva un resultado, puede usar una función. Coloque una función en un módulo (en el Editor de Visual Basic, haga clic en Insertar, Módulo). Por ejemplo, la función con el nombre Área.

Function Area(x As Double, y As Double) As Double

Area = x * y

End Function

Explicación: Esta función tiene dos argumentos (de tipo Double) y un tipo de retorno (la parte después de As también de tipo Double). Puede usar el nombre de la función (Área) en su código para indicar qué resultado desea devolver (aquí x * y).

Ahora puede hacer referencia a esta función (en otras palabras, llamar a la función) desde otro lugar de su código simplemente usando el nombre de la función y dando un valor para cada argumento.

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

Dim z As Double

z = Area(3, 5) + 2

MsgBox z

Explicación: La función devuelve un valor, por lo que debe 'capturar' este valor en su código. Puede usar otra variable (z) para esto. A continuación, puede agregar otro valor a esta variable (si lo desea). Finalmente, muestre el valor usando un MsgBox.

Resultado al hacer clic en el botón de comando en la hoja:

Resultado de la función Excel VBA

Sub

Si desea que Excel VBA realice algunas acciones, puede usar un sub. Coloque un sub en un módulo (en el Editor de Visual Basic, haga clic en Insertar, Módulo). Por ejemplo, el sub con el nombre Área.

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

Explicación: Este sub tiene dos argumentos (de tipo Double). ¡No tiene un tipo de retorno! Puede hacer referencia a este sub (llamar al sub) desde otro lugar en su código simplemente usando el nombre del sub y dando un valor para cada argumento.

Coloque un botón de comando en su hoja de trabajo y agregue la siguiente línea de código:

Area 3, 5

Resultado al hacer clic en el botón de comando en la hoja:

Subresultado de Excel VBA

¿Puedes ver la diferencia entre la función y el sub? La función devolvió el valor 15. Agregamos el valor 2 a este resultado y mostramos el resultado final. Cuando llamamos al sub, no teníamos más control sobre el resultado (15) porque un sub no puede devolver un valor.

1/5 Completado! Más información sobre funciones y subs>
Capítulo siguiente: Objeto de aplicación