/ / Excel VBA Function and Sub

Excel VBA Función y Sub

Función | Sub

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

Función

Si desea que Excel VBA realice una tarea quedevuelve un resultado, puede utilizar 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 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 Doble) y un tipo de retorno (la parte después de Como también de tipo Doble). Puede usar el nombre de la función (Área) en su código para indicar qué resultado desea devolver (aquí x * y).

Ahora puede referirse a esta función (en otras palabras, llamar a la función) desde otro lugar en su código simplemente usando el nombre de la función y asignando 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 tiene que "capturar" este valor en su código. Puedes 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 nombre Área.

Sub Area(x As Double, y As Double)

MsgBox x * y

End Sub

Explicación: Este sub tiene dos argumentos (de tipo doble). ¡No tiene un tipo de retorno! Puede referirse 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:

Excel VBA Sub Resultado

¿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.

Lea también: